killbill-memoizeit

Details

diff --git a/util/src/main/resources/com/ning/billing/util/ddl.sql b/util/src/main/resources/com/ning/billing/util/ddl.sql
index 389efa7..4ae95d7 100644
--- a/util/src/main/resources/com/ning/billing/util/ddl.sql
+++ b/util/src/main/resources/com/ning/billing/util/ddl.sql
@@ -17,22 +17,27 @@ CREATE TABLE custom_field_history (
   id char(36) NOT NULL,
   object_id char(36) NOT NULL,
   object_type varchar(30) NOT NULL,
-  field_name varchar(30) NOT NULL,
-  field_value varchar(255) NOT NULL,
-  change_type char(6) NOT NULL,
-  date datetime NOT NULL
+  field_name varchar(30),
+  field_value varchar(255),
+  date datetime NOT NULL,
+  change_type char(6) NOT NULL
 ) ENGINE=innodb;
 CREATE INDEX custom_field_history_object_id_object_type ON custom_fields(object_id, object_type);
 
 CREATE TRIGGER store_custom_field_history_on_insert AFTER INSERT ON custom_fields
     FOR EACH ROW
-        INSERT INTO custom_field_history (id, object_id, object_type, field_name, field_value, change_type, date)
-        VALUES (NEW.id, NEW.object_id, NEW.object_type, NEW.field_name, NEW.field_value, 'CREATE', NEW.created_date);
+        INSERT INTO custom_field_history (id, object_id, object_type, field_name, field_value, date, change_type)
+        VALUES (NEW.id, NEW.object_id, NEW.object_type, NEW.field_name, NEW.field_value, NOW(), 'CREATE');
 
 CREATE TRIGGER store_custom_field_history_on_update AFTER UPDATE ON custom_fields
     FOR EACH ROW
-        INSERT INTO custom_field_history (id, object_id, object_type, field_name, field_value, change_type, date)
-        VALUES (NEW.id, NEW.object_id, NEW.object_type, NEW.field_name, NEW.field_value, 'UPDATE', NEW.updated_date);
+        INSERT INTO custom_field_history (id, object_id, object_type, field_name, field_value, date, change_type)
+        VALUES (NEW.id, NEW.object_id, NEW.object_type, NEW.field_name, NEW.field_value, NOW(), 'UPDATE');
+
+CREATE TRIGGER store_custom_field_history_on_delete BEFORE DELETE ON custom_fields
+    FOR EACH ROW
+        INSERT INTO custom_field_history (id, object_id, object_type, field_name, field_value, date, change_type)
+        VALUES (OLD.id, OLD.object_id, OLD.object_type, NULL, NULL, NOW(), 'DELETE');
 
 DROP TABLE IF EXISTS tag_descriptions;
 DROP TABLE IF EXISTS tag_definitions;
@@ -47,6 +52,33 @@ CREATE TABLE tag_definitions (
 ) ENGINE=innodb;
 CREATE UNIQUE INDEX tag_definitions_name ON tag_definitions(name);
 
+DROP TABLE IF EXISTS tag_definition_history;
+CREATE TABLE tag_definition_history (
+  id char(36) NOT NULL,
+  name varchar(20) NOT NULL,
+  created_by varchar(50),
+  description varchar(200),
+  date datetime NOT NULL,
+  change_type char(6) NOT NULL
+) ENGINE=innodb;
+CREATE INDEX tag_definition_history_id ON tag_definition_history(id);
+CREATE INDEX tag_definition_history_name ON tag_definition_history(name);
+
+CREATE TRIGGER tag_definition_history_after_insert AFTER INSERT ON tag_definition_history
+    FOR EACH ROW
+        INSERT INTO tag_definition_history (id, name, created_by, description, date, change_type)
+        VALUES (NEW.id, NEW.name, NEW.created_by, NEW.description, NOW(), 'CREATE');
+
+CREATE TRIGGER tag_definition_history_after_update AFTER UPDATE ON tag_definition_history
+    FOR EACH ROW
+        INSERT INTO tag_definition_history (id, name, created_by, description, date, change_type)
+        VALUES (NEW.id, NEW.name, NEW.created_by, NEW.description, NOW(), 'UPDATE');
+
+CREATE TRIGGER tag_definition_history_before_delete BEFORE DELETE ON tag_definition_history
+    FOR EACH ROW
+        INSERT INTO tag_definition_history (id, name, created_by, description, date, change_type)
+        VALUES (OLD.id, OLD.name, NULL, NULL, NOW(), 'DELETE');
+
 DROP TABLE IF EXISTS tags;
 CREATE TABLE tags (
   id char(36) NOT NULL,
@@ -60,6 +92,32 @@ CREATE TABLE tags (
 CREATE INDEX tags_by_object ON tags(object_id);
 CREATE UNIQUE INDEX tags_unique ON tags(tag_definition_name, object_id);
 
+DROP TABLE IF EXISTS tag_history;
+CREATE TABLE tag_history (
+  id char(36) NULL,
+  tag_definition_name varchar(20) NOT NULL,
+  object_id char(36) NOT NULL,
+  object_type varchar(30) NOT NULL,
+  date datetime NOT NULL,
+  change_type char(6) NOT NULL
+) ENGINE = innodb;
+CREATE INDEX tag_history_by_object ON tags(object_id);
+
+CREATE TRIGGER tag_history_after_insert AFTER INSERT ON tag_history
+    FOR EACH ROW
+        INSERT INTO tag_history (id, tag_definition_name, object_id, object_type, date, change_type)
+        VALUES (NEW.id, NEW.tag_definition_name, NEW.object_id, NEW.object_type, NOW(), 'CREATE');
+
+CREATE TRIGGER tag_history_after_update AFTER UPDATE ON tag_history
+    FOR EACH ROW
+        INSERT INTO tag_history (id, tag_definition_name, object_id, object_type, date, change_type)
+        VALUES (NEW.id, NEW.tag_definition_name, NEW.object_id, NEW.object_type, NOW(), 'UPDATE');
+
+CREATE TRIGGER tag_history_before_delete BEFORE DELETE ON tag_history
+    FOR EACH ROW
+        INSERT INTO tag_history (id, tag_definition_name, object_id, object_type, date, change_type)
+        VALUES (OLD.id, OLD.tag_definition_name, OLD.object_id, OLD.object_type, NOW(), 'DELETE');
+
 DROP TABLE IF EXISTS notifications;
 CREATE TABLE notifications (
     id int(11) unsigned NOT NULL AUTO_INCREMENT,
@@ -85,4 +143,4 @@ CREATE TABLE claimed_notifications (
     claimed_dt datetime NOT NULL,
     notification_id char(36) NOT NULL,
     PRIMARY KEY(id)
-) ENGINE=innodb;
+) ENGINE=innodb;
\ No newline at end of file