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)