killbill-uncached

Add tenant wipeout script

10/20/2018 4:14:30 AM

Details

diff --git a/util/src/main/resources/trimTenant.sql b/util/src/main/resources/trimTenant.sql
index d0bfb0c..6d6529a 100644
--- a/util/src/main/resources/trimTenant.sql
+++ b/util/src/main/resources/trimTenant.sql
@@ -1,3 +1,16 @@
+-- WARNING !!!
+-- THIS DELETES MOST OF THE TENANT INFORMATION.
+-- USE ONLY IN TESTING.
+--
+-- A mysql stored procedure to trim tenant information.
+-- Doesn't delete the tenant and accounts.
+--
+-- Usage (from mysql commandline):
+--   CALL trimTenant(API_KEY)
+--
+--  For e.g.,
+--   CALL trimTenant('tenant1')
+
 drop procedure if exists trimTenant;
 DELIMITER //
 CREATE PROCEDURE trimTenant(p_api_key varchar(36))
@@ -73,3 +86,70 @@ BEGIN
     END;
 //
 DELIMITER ;
+
+-- WARNING !!!
+-- THIS DELETES ALL THE TENANT INFORMATION COMPLETELY
+-- ONLY TO BE USED IN TESTING
+--
+-- A mysql stored procedure to wipeout the tenant completely.
+--
+-- Usage (from mysql commandline):
+--   CALL wipeoutTenant(API_KEY)
+--
+--  For e.g.,
+--   CALL wipeoutTenant('tenant1')
+
+drop procedure if exists wipeoutTenant;
+DELIMITER //
+CREATE PROCEDURE wipeoutTenant(p_api_key varchar(36))
+BEGIN
+
+    DECLARE v_tenant_record_id bigint /*! unsigned */;
+    DECLARE v_tenant_id varchar(36);
+
+    select record_id from tenants WHERE api_key = p_api_key into v_tenant_record_id;
+    select id from tenants WHERE api_key = p_api_key into v_tenant_id;
+
+    -- Trim the tenant first
+    CALL trimTenant(p_api_key);
+
+    DELETE FROM account_email_history WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM account_emails WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM account_history WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM accounts WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_block_definition WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_phase_definition WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_phase_usage WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_plan_definition WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_plan_phase WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_tier_block WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_tier_definition WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_usage_definition WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM catalog_override_usage_tier WHERE tenant_record_id = v_tenant_record_id;
+
+    -- Uses tenant ID (instead of record id)
+    DELETE FROM stripe_payment_methods WHERE kb_tenant_id = v_tenant_id;
+    DELETE FROM stripe_responses WHERE kb_tenant_id = v_tenant_id;
+    DELETE FROM stripe_transactions WHERE kb_tenant_id = v_tenant_id;
+
+    DELETE FROM tag_definition_history WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM tag_definitions WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM tenant_broadcasts WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM tenant_kvs WHERE tenant_record_id = v_tenant_record_id;
+
+    DELETE FROM tenants WHERE id = v_tenant_id;
+
+    -- NOT DELETED TABLES
+    -- _invoice_payment_control_plugin_auto_pay_off
+    -- analytics_currency_conversion
+    -- analytics_reports WHERE
+    -- node_infos
+    -- roles_permissions
+    -- service_broadcasts
+    -- sessions
+    -- user_roles
+    -- users
+
+    END;
+//
+DELIMITER ;