diff --git a/packages/db/migrations/0120.do.entity_labels.sql b/packages/db/migrations/0120.do.entity_labels.sql index 62298d7d2..d75ea6218 100755 --- a/packages/db/migrations/0120.do.entity_labels.sql +++ b/packages/db/migrations/0120.do.entity_labels.sql @@ -12,7 +12,7 @@ CREATE TABLE omnivore.entity_labels ( unique(label_id, library_item_id, highlight_id) ); -GRANT SELECT, INSERT, DELETE ON omnivore.entity_labels TO omnivore_user; +GRANT SELECT, INSERT, UPDATE, DELETE ON omnivore.entity_labels TO omnivore_user; CREATE OR REPLACE FUNCTION update_library_item_labels() RETURNS trigger AS $$ @@ -29,7 +29,7 @@ BEGIN END IF; IF current_library_item_id IS NOT NULL THEN - -- for labels of the ABORTlibrary_item + -- for labels of the library_item WITH labels_agg AS ( SELECT array_agg(l.name) as names_agg FROM omnivore.labels l diff --git a/packages/db/migrations/0121.do.alter_labels_table.sql b/packages/db/migrations/0121.do.alter_labels_table.sql index e5269c289..242bec047 100755 --- a/packages/db/migrations/0121.do.alter_labels_table.sql +++ b/packages/db/migrations/0121.do.alter_labels_table.sql @@ -9,6 +9,25 @@ ALTER TABLE omnivore.labels ADD COLUMN updated_at timestamptz; CREATE TRIGGER update_labels_modtime BEFORE UPDATE ON omnivore.labels FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column(); +CREATE OR REPLACE FUNCTION update_entity_labels() +RETURNS trigger AS $$ +BEGIN + -- update entity_labels table to trigger update on library_item table + UPDATE omnivore.entity_labels + SET label_id = NEW.id + WHERE label_id = OLD.id; + + return NEW; +END; +$$ LANGUAGE plpgsql; + +-- triggers when label name is updated +CREATE TRIGGER entity_labels_update +AFTER UPDATE ON omnivore.labels +FOR EACH ROW +WHEN (OLD.name <> NEW.name) +EXECUTE FUNCTION update_entity_labels(); + ALTER TABLE omnivore.abuse_report DROP COLUMN page_id; ALTER TABLE omnivore.abuse_report RENAME COLUMN elastic_page_id TO library_item_id; ALTER TABLE omnivore.content_display_report DROP COLUMN page_id; diff --git a/packages/db/migrations/0121.undo.alter_labels_table.sql b/packages/db/migrations/0121.undo.alter_labels_table.sql index 28b409352..bba0daf80 100755 --- a/packages/db/migrations/0121.undo.alter_labels_table.sql +++ b/packages/db/migrations/0121.undo.alter_labels_table.sql @@ -9,6 +9,8 @@ ALTER TABLE omnivore.abuse_report ADD COLUMN page_id text; ALTER TABLE omnivore.content_display_report RENAME COLUMN library_item_id TO elastic_page_id; ALTER TABLE omnivore.content_display_report ADD COLUMN page_id text; +DROP TRIGGER IF EXISTS entity_labels_update ON omnivore.labels; +DROP FUNCTION IF EXISTS update_entity_labels(); DROP TRIGGER update_labels_modtime ON omnivore.labels; ALTER TABLE omnivore.labels DROP COLUMN updated_at;