Initial commit
This commit is contained in:
84
prisma/migrations/202604071700_budget_accounts/migration.sql
Normal file
84
prisma/migrations/202604071700_budget_accounts/migration.sql
Normal file
@@ -0,0 +1,84 @@
|
||||
ALTER TABLE "users" ADD COLUMN "username" TEXT;
|
||||
|
||||
WITH ranked AS (
|
||||
SELECT
|
||||
id,
|
||||
CASE
|
||||
WHEN lower(regexp_replace(split_part(email, '@', 1), '[^a-zA-Z0-9_-]', '-', 'g')) = ''
|
||||
THEN CONCAT('user-', substring(id from 1 for 6))
|
||||
ELSE lower(regexp_replace(split_part(email, '@', 1), '[^a-zA-Z0-9_-]', '-', 'g'))
|
||||
END AS base,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY CASE
|
||||
WHEN lower(regexp_replace(split_part(email, '@', 1), '[^a-zA-Z0-9_-]', '-', 'g')) = ''
|
||||
THEN CONCAT('user-', substring(id from 1 for 6))
|
||||
ELSE lower(regexp_replace(split_part(email, '@', 1), '[^a-zA-Z0-9_-]', '-', 'g'))
|
||||
END
|
||||
ORDER BY created_at, id
|
||||
) AS rn
|
||||
FROM "users"
|
||||
)
|
||||
UPDATE "users" AS u
|
||||
SET "username" = CASE
|
||||
WHEN ranked.rn = 1 THEN ranked.base
|
||||
ELSE CONCAT(ranked.base, '-', ranked.rn)
|
||||
END
|
||||
FROM ranked
|
||||
WHERE u.id = ranked.id;
|
||||
|
||||
ALTER TABLE "users" ALTER COLUMN "username" SET NOT NULL;
|
||||
ALTER TABLE "users" ALTER COLUMN "email" DROP NOT NULL;
|
||||
CREATE UNIQUE INDEX "users_username_key" ON "users"("username");
|
||||
|
||||
CREATE TABLE "budgets" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"total_budget" DECIMAL(10,2) NOT NULL,
|
||||
"color_code" TEXT NOT NULL,
|
||||
"working_group_id" TEXT NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
CONSTRAINT "budgets_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
INSERT INTO "budgets" (
|
||||
"id",
|
||||
"name",
|
||||
"total_budget",
|
||||
"color_code",
|
||||
"working_group_id",
|
||||
"created_at",
|
||||
"updated_at"
|
||||
)
|
||||
SELECT
|
||||
CONCAT('budget_', "id"),
|
||||
'Hauptbudget',
|
||||
"total_budget",
|
||||
"color_code",
|
||||
"id",
|
||||
"created_at",
|
||||
"updated_at"
|
||||
FROM "working_groups";
|
||||
|
||||
CREATE UNIQUE INDEX "budgets_working_group_id_name_key" ON "budgets"("working_group_id", "name");
|
||||
|
||||
ALTER TABLE "budgets"
|
||||
ADD CONSTRAINT "budgets_working_group_id_fkey"
|
||||
FOREIGN KEY ("working_group_id") REFERENCES "working_groups"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "expenses" RENAME COLUMN "notes" TO "description";
|
||||
ALTER TABLE "expenses" ADD COLUMN "budget_id" TEXT;
|
||||
|
||||
UPDATE "expenses"
|
||||
SET "budget_id" = CONCAT('budget_', "ag_id");
|
||||
|
||||
ALTER TABLE "expenses" ALTER COLUMN "budget_id" SET NOT NULL;
|
||||
|
||||
ALTER TABLE "expenses"
|
||||
ADD CONSTRAINT "expenses_budget_id_fkey"
|
||||
FOREIGN KEY ("budget_id") REFERENCES "budgets"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "working_groups" DROP COLUMN "total_budget";
|
||||
ALTER TABLE "working_groups" DROP COLUMN "color_code";
|
||||
Reference in New Issue
Block a user