From 1901ebad42a741c73f11621439e9d899fa188357 Mon Sep 17 00:00:00 2001 From: Maciej Ziarkowski Date: Thu, 15 Aug 2019 16:08:36 +0100 Subject: [PATCH] Add user delete database migrations Apart from adding the delete-related columns, this migration replaces the existing unique constraint on the username with a unique index which has a WHERE clause, so that deleted usernames need not be unique. This is to avoid having to implement a special function for generating unique IDs just to keep the deleted username unique and under 30 chars. The deleted username can still use e.g. the initial part of the user_id but the uniqueness is not required. --- migrations/009.user-deleted.down.sql | 5 +++++ migrations/009.user-deleted.up.sql | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 migrations/009.user-deleted.down.sql create mode 100644 migrations/009.user-deleted.up.sql diff --git a/migrations/009.user-deleted.down.sql b/migrations/009.user-deleted.down.sql new file mode 100644 index 00000000..bc67ba5f --- /dev/null +++ b/migrations/009.user-deleted.down.sql @@ -0,0 +1,5 @@ +ALTER TABLE users DROP COLUMN IF EXISTS is_deleted; +ALTER TABLE users DROP COLUMN IF EXISTS deleted_on; + +DROP INDEX IF EXISTS users_username_idx; +ALTER TABLE users ADD CONSTRAINT users_username_key UNIQUE (username); \ No newline at end of file diff --git a/migrations/009.user-deleted.up.sql b/migrations/009.user-deleted.up.sql new file mode 100644 index 00000000..72c18713 --- /dev/null +++ b/migrations/009.user-deleted.up.sql @@ -0,0 +1,5 @@ +ALTER TABLE users ADD COLUMN IF NOT EXISTS is_deleted boolean NOT NULL DEFAULT(false); +ALTER TABLE users ADD COLUMN IF NOT EXISTS deleted_on timestamp NULL; + +ALTER TABLE users DROP CONSTRAINT IF EXISTS users_username_key; +CREATE UNIQUE INDEX users_username_idx ON users (username) WHERE NOT is_deleted; \ No newline at end of file