From a98a93584b268a5e2f7ba3c30c1a94432ad49677 Mon Sep 17 00:00:00 2001 From: Matteo Latini Date: Tue, 17 Jun 2025 17:03:01 +0200 Subject: [PATCH] Add delete functionality for Metaobject Definitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements the delete_metaobject_definition method to complete the CRUD operations for metaobject definitions management API. The method follows the same patterns as create and update methods, including proper error handling and logging. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- lib/shopify_toolkit/metaobject_statements.rb | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/shopify_toolkit/metaobject_statements.rb b/lib/shopify_toolkit/metaobject_statements.rb index 6c2dcb8..e0c70db 100644 --- a/lib/shopify_toolkit/metaobject_statements.rb +++ b/lib/shopify_toolkit/metaobject_statements.rb @@ -107,6 +107,36 @@ def update_metaobject_definition(type, **options) .tap { handle_shopify_admin_client_errors(_1, "data.metaobjectDefinitionUpdate.userErrors") } end + log_time \ + def delete_metaobject_definition(type) + existing_gid = get_metaobject_definition_gid(type) + + unless existing_gid + say "Metaobject #{type} does not exist, skipping deletion" + return + end + + # https://shopify.dev/docs/api/admin-graphql/2024-10/mutations/metaobjectDefinitionDelete + query = + "# GraphQL + mutation DeleteMetaobjectDefinition($id: ID!) { + metaobjectDefinitionDelete(id: $id) { + deletedId + userErrors { + field + message + code + } + } + } + " + variables = { id: existing_gid } + + shopify_admin_client + .query(query:, variables:) + .tap { handle_shopify_admin_client_errors(_1, "data.metaobjectDefinitionDelete.userErrors") } + end + def self.define(&block) context = Object.new context.extend(self)