You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 11, 2021. It is now read-only.
Copy file name to clipboardExpand all lines: migration/sql-files/111-cascading-soft-delete.sql
+29-24Lines changed: 29 additions & 24 deletions
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,6 @@
1
+
-- Add missing foreign key constraint from comment to work item
2
+
-- ALTER TABLE comments ADD FOREIGN KEY (parent_id) REFERENCES work_items(id) ON DELETE CASCADE;
3
+
1
4
CREATE OR REPLACEFUNCTIONarchive_record()
2
5
-- archive_record() can be use used as the trigger function on all tables
3
6
-- that want to archive their data into a separate *_archive table after
@@ -53,37 +56,39 @@ END;
53
56
$$ LANGUAGE plpgsql;
54
57
55
58
-- Create archive tables
56
-
CREATETABLEareas_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (areas);
57
-
CREATETABLEcomments_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (comments);
58
-
CREATETABLEiterations_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (iterations);
59
-
CREATETABLElabels_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (lables);
59
+
--CREATE TABLE areas_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (areas);
60
+
--CREATE TABLE comments_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (comments);
61
+
--CREATE TABLE iterations_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (iterations);
62
+
--CREATE TABLE labels_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (labels);
60
63
CREATETABLEspace_templates_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (space_templates);
61
64
CREATETABLEspaces_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (spaces);
62
-
CREATETABLEwork_item_link_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_link_types);
63
-
CREATETABLEwork_item_links_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_links);
64
-
CREATETABLEwork_item_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_types);
65
-
CREATETABLEwork_items_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_items);
65
+
--CREATE TABLE work_item_link_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_link_types);
66
+
--CREATE TABLE work_item_links_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_links);
67
+
--CREATE TABLE work_item_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_types);
68
+
--CREATE TABLE work_items_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_items);
66
69
67
70
-- Setup triggers
68
-
CREATETRIGGERarchive_areas AFTER UPDATE OF deleted_at ORDELETEON areas FOR EACH ROW EXECUTE PROCEDURE archive_record();
69
-
CREATETRIGGERarchive_comments AFTER UPDATE OF deleted_at ORDELETEON comments FOR EACH ROW EXECUTE PROCEDURE archive_record();
70
-
CREATETRIGGERarchive_iterations AFTER UPDATE OF deleted_at ORDELETEON iterations FOR EACH ROW EXECUTE PROCEDURE archive_record();
71
-
CREATETRIGGERarchive_labels AFTER UPDATE OF deleted_at ORDELETEON labels FOR EACH ROW EXECUTE PROCEDURE archive_record();
71
+
--CREATE TRIGGER archive_areas AFTER UPDATE OF deleted_at OR DELETE ON areas FOR EACH ROW EXECUTE PROCEDURE archive_record();
72
+
--CREATE TRIGGER archive_comments AFTER UPDATE OF deleted_at OR DELETE ON comments FOR EACH ROW EXECUTE PROCEDURE archive_record();
73
+
--CREATE TRIGGER archive_iterations AFTER UPDATE OF deleted_at OR DELETE ON iterations FOR EACH ROW EXECUTE PROCEDURE archive_record();
74
+
--CREATE TRIGGER archive_labels AFTER UPDATE OF deleted_at OR DELETE ON labels FOR EACH ROW EXECUTE PROCEDURE archive_record();
72
75
CREATETRIGGERarchive_space_templates AFTER UPDATE OF deleted_at ORDELETEON space_templates FOR EACH ROW EXECUTE PROCEDURE archive_record();
73
76
CREATETRIGGERarchive_spaces AFTER UPDATE OF deleted_at ORDELETEON spaces FOR EACH ROW EXECUTE PROCEDURE archive_record();
74
-
CREATETRIGGERarchive_work_item_link_types AFTER UPDATE OF deleted_at ORDELETEON work_item_link_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
75
-
CREATETRIGGERarchive_work_item_links AFTER UPDATE OF deleted_at ORDELETEON work_item_links FOR EACH ROW EXECUTE PROCEDURE archive_record();
76
-
CREATETRIGGERarchive_work_item_types AFTER UPDATE OF deleted_at ORDELETEON work_item_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
77
-
CREATETRIGGERarchive_work_items AFTER UPDATE OF deleted_at ORDELETEON work_items FOR EACH ROW EXECUTE PROCEDURE archive_record();
77
+
-- CREATE TRIGGER archive_work_item_link_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_link_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
78
+
-- CREATE TRIGGER archive_work_item_links AFTER UPDATE OF deleted_at OR DELETE ON work_item_links FOR EACH ROW EXECUTE PROCEDURE archive_record();
79
+
-- CREATE TRIGGER archive_work_item_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
80
+
-- CREATE TRIGGER archive_work_items AFTER UPDATE OF deleted_at OR DELETE ON work_items FOR EACH ROW EXECUTE PROCEDURE archive_record();
81
+
82
+
78
83
79
84
-- Archive all deleted records
80
-
DELETEFROM areas WHERE deleted_at IS NOT NULL;
81
-
DELETEFROM comments WHERE deleted_at IS NOT NULL;
82
-
DELETEFROM iterations WHERE deleted_at IS NOT NULL;
83
-
DELETEFROM labels WHERE deleted_at IS NOT NULL;
85
+
--DELETE FROM areas WHERE deleted_at IS NOT NULL;
86
+
--DELETE FROM comments WHERE deleted_at IS NOT NULL;
87
+
--DELETE FROM iterations WHERE deleted_at IS NOT NULL;
88
+
--DELETE FROM labels WHERE deleted_at IS NOT NULL;
84
89
DELETEFROM space_templates WHERE deleted_at IS NOT NULL;
85
90
DELETEFROM spaces WHERE deleted_at IS NOT NULL;
86
-
DELETEFROM work_item_link_types WHERE deleted_at IS NOT NULL;
87
-
DELETEFROM work_item_links WHERE deleted_at IS NOT NULL;
88
-
DELETEFROM work_item_types WHERE deleted_at IS NOT NULL;
89
-
DELETEFROM work_items WHERE deleted_at IS NOT NULL;
91
+
--DELETE FROM work_item_link_types WHERE deleted_at IS NOT NULL;
92
+
--DELETE FROM work_item_links WHERE deleted_at IS NOT NULL;
93
+
--DELETE FROM work_item_types WHERE deleted_at IS NOT NULL;
94
+
--DELETE FROM work_items WHERE deleted_at IS NOT NULL;
0 commit comments