From 5e8508e0250545e7deb6e62d4ec51aec575d1af1 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 27 Jul 2022 21:38:52 +0800 Subject: [PATCH] Add position column in labels table --- .../0090.do.add_position_to_labels.sql | 25 +++++++++++++++++++ .../0090.undo.add_position_to_labels.sql | 9 +++++++ 2 files changed, 34 insertions(+) create mode 100755 packages/db/migrations/0090.do.add_position_to_labels.sql create mode 100755 packages/db/migrations/0090.undo.add_position_to_labels.sql diff --git a/packages/db/migrations/0090.do.add_position_to_labels.sql b/packages/db/migrations/0090.do.add_position_to_labels.sql new file mode 100755 index 000000000..a1790d4d6 --- /dev/null +++ b/packages/db/migrations/0090.do.add_position_to_labels.sql @@ -0,0 +1,25 @@ +-- Type: DO +-- Name: add_position_to_labels +-- Description: Add position column to labels table + +BEGIN; + +ALTER TABLE omnivore.labels ADD COLUMN position INTEGER NOT NULL DEFAULT 0; + +WITH positions AS ( + SELECT + id, row_number() OVER (PARTITION BY user_id ORDER BY name) as row_num + FROM + omnivore.labels +) UPDATE + omnivore.labels + SET + position = positions.row_num + FROM + positions + WHERE + omnivore.labels.id = positions.id; + +ALTER TABLE omnivore.labels ADD constraint labels_position_user_id_unique UNIQUE(user_id, position); + +COMMIT; diff --git a/packages/db/migrations/0090.undo.add_position_to_labels.sql b/packages/db/migrations/0090.undo.add_position_to_labels.sql new file mode 100755 index 000000000..a1eff4384 --- /dev/null +++ b/packages/db/migrations/0090.undo.add_position_to_labels.sql @@ -0,0 +1,9 @@ +-- Type: UNDO +-- Name: add_position_to_labels +-- Description: Add position column to labels table + +BEGIN; + +ALTER TABLE omnivore.labels DROP COLUMN IF EXISTS position; + +COMMIT;