Files
umami/prisma/migrations/24_lowercase_username/migration.sql
T

25 lines
797 B
SQL

-- Rename only soft-deleted rows that block lowercasing a live username.
UPDATE "user" AS d
SET "username" = CONCAT(LEFT(d."username", 246), '-', SUBSTRING(MD5(d."user_id"::text) FROM 1 FOR 8))
WHERE d."deleted_at" IS NOT NULL
AND EXISTS (
SELECT 1
FROM "user" AS a
WHERE a."deleted_at" IS NULL
AND a."user_id" <> d."user_id"
AND a."username" <> LOWER(a."username")
AND LOWER(a."username") = LOWER(d."username")
);
-- Lowercase live usernames unless another live row would still collide.
UPDATE "user" AS u
SET "username" = LOWER(u."username")
WHERE u."deleted_at" IS NULL
AND u."username" <> LOWER(u."username")
AND NOT EXISTS (
SELECT 1
FROM "user" AS c
WHERE c."user_id" <> u."user_id"
AND LOWER(c."username") = LOWER(u."username")
);