killbill-uncached

Details

diff --git a/util/src/main/resources/trimTenant.sql b/util/src/main/resources/trimTenant.sql
index d0bfb0c..8499101 100644
--- a/util/src/main/resources/trimTenant.sql
+++ b/util/src/main/resources/trimTenant.sql
@@ -1,11 +1,26 @@
+-- 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))
 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;
 
     DELETE FROM analytics_account_fields WHERE tenant_record_id = v_tenant_record_id;
     DELETE FROM analytics_account_tags WHERE tenant_record_id = v_tenant_record_id;
@@ -67,8 +82,16 @@ BEGIN
     DELETE FROM rolled_up_usage WHERE tenant_record_id = v_tenant_record_id;
     DELETE FROM subscription_events WHERE tenant_record_id = v_tenant_record_id;
     DELETE FROM subscriptions WHERE tenant_record_id = v_tenant_record_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 tag_history WHERE tenant_record_id = v_tenant_record_id;
     DELETE FROM tags WHERE tenant_record_id = v_tenant_record_id;
+    DELETE FROM tenant_broadcasts 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;
 
     END;
 //
diff --git a/util/src/main/resources/wipeoutTenant.sql b/util/src/main/resources/wipeoutTenant.sql
new file mode 100644
index 0000000..51364d3
--- /dev/null
+++ b/util/src/main/resources/wipeoutTenant.sql
@@ -0,0 +1,57 @@
+-- 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;
+
+    DELETE FROM _invoice_payment_control_plugin_auto_pay_off
+        WHERE account_id in (
+            SELECT id 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;
+
+    DELETE FROM tenant_kvs WHERE tenant_record_id = v_tenant_record_id;
+
+    -- Trim the tenant
+    CALL trimTenant(p_api_key);
+
+    DELETE FROM tenants WHERE id = v_tenant_id;
+
+    -- NOT DELETED TABLES
+    -- analytics_currency_conversion
+    -- analytics_reports WHERE
+    -- node_infos
+    -- roles_permissions
+    -- service_broadcasts
+    -- sessions
+    -- user_roles
+    -- users
+
+    END;
+//
+DELIMITER ;