BLOG-95 Seperate SQL migration files #98
@ -1,30 +0,0 @@
|
|||||||
CREATE TABLE "image" (
|
|
||||||
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
||||||
"mime_type" VARCHAR(100) NOT NULL,
|
|
||||||
"deleted_time" TIMESTAMP,
|
|
||||||
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "user" (
|
|
||||||
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
||||||
"issuer" VARCHAR(100) NOT NULL,
|
|
||||||
"source_id" VARCHAR(100) NOT NULL,
|
|
||||||
"displayed_name" VARCHAR(100) NOT NULL,
|
|
||||||
"email" VARCHAR(100) NOT NULL,
|
|
||||||
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX "user_source_id_issuer_key" ON "user" ("source_id", "issuer");
|
|
||||||
CREATE INDEX "user_email_key" ON "user" HASH ("email");
|
|
||||||
|
|
||||||
CREATE TRIGGER "update_image_updated_time"
|
|
||||||
BEFORE UPDATE ON "image"
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE FUNCTION update_updated_time_column();
|
|
||||||
|
|
||||||
CREATE TRIGGER "update_user_updated_time"
|
|
||||||
BEFORE UPDATE ON "user"
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE FUNCTION update_updated_time_column();
|
|
@ -0,0 +1,6 @@
|
|||||||
|
CREATE OR REPLACE FUNCTION update_updated_time_column() RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
NEW.updated_time = CURRENT_TIMESTAMP;
|
||||||
|
return NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE 'plpgsql';
|
16
backend/migrations/20250801061939_create_post_table.sql
Normal file
16
backend/migrations/20250801061939_create_post_table.sql
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "post" (
|
||||||
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
||||||
|
"title" TEXT NOT NULL,
|
||||||
|
"description" TEXT NOT NULL,
|
||||||
|
"preview_image_url" TEXT NOT NULL,
|
||||||
|
"content" TEXT NOT NULL,
|
||||||
|
"published_time" TIMESTAMP,
|
||||||
|
"deleted_time" TIMESTAMP,
|
||||||
|
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER "update_post_updated_time"
|
||||||
|
BEFORE UPDATE ON "post"
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE FUNCTION update_updated_time_column();
|
13
backend/migrations/20250801062007_create_label_table.sql
Normal file
13
backend/migrations/20250801062007_create_label_table.sql
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "label" (
|
||||||
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"color" BIGINT NOT NULL CHECK ("color" >= 0 AND "color" <= 4294967295),
|
||||||
|
"deleted_time" TIMESTAMP,
|
||||||
|
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER "update_label_updated_time"
|
||||||
|
BEFORE UPDATE ON "label"
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE FUNCTION update_updated_time_column();
|
@ -0,0 +1,7 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "post_label" (
|
||||||
|
"post_id" INTEGER NOT NULL,
|
||||||
|
"label_id" INTEGER NOT NULL,
|
||||||
|
PRIMARY KEY ("post_id", "label_id"),
|
||||||
|
FOREIGN KEY ("post_id") REFERENCES "post" ("id") ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY ("label_id") REFERENCES "label" ("id") ON DELETE CASCADE
|
||||||
|
);
|
12
backend/migrations/20250801062344_create_image_table.sql
Normal file
12
backend/migrations/20250801062344_create_image_table.sql
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "image" (
|
||||||
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
||||||
|
"mime_type" VARCHAR(100) NOT NULL,
|
||||||
|
"deleted_time" TIMESTAMP,
|
||||||
|
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER "update_image_updated_time"
|
||||||
|
BEFORE UPDATE ON "image"
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE FUNCTION update_updated_time_column();
|
20
backend/migrations/20250801062412_create_user_table.sql
Normal file
20
backend/migrations/20250801062412_create_user_table.sql
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "user" (
|
||||||
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
||||||
|
"issuer" VARCHAR(100) NOT NULL,
|
||||||
|
"source_id" VARCHAR(100) NOT NULL,
|
||||||
|
"displayed_name" VARCHAR(100) NOT NULL,
|
||||||
|
"email" VARCHAR(100) NOT NULL,
|
||||||
|
"created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX IF NOT EXISTS "idx_user_source_id_issuer"
|
||||||
|
ON "user" ("source_id", "issuer");
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_user_email"
|
||||||
|
ON "user" USING HASH ("email");
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER "update_user_updated_time"
|
||||||
|
BEFORE UPDATE ON "user"
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE FUNCTION update_updated_time_column();
|
Loading…
x
Reference in New Issue
Block a user