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