diff --git a/backend/migrations/20250505012740_v0.1.1.sql b/backend/migrations/20250505012740_v0.1.1.sql index 1f74985..ffc5dda 100644 --- a/backend/migrations/20250505012740_v0.1.1.sql +++ b/backend/migrations/20250505012740_v0.1.1.sql @@ -8,8 +8,8 @@ CREATE TABLE "post" ( "content" TEXT NOT NULL, "published_time" TIMESTAMP, "deleted_time" TIMESTAMP, - "created_time" TIMESTAMP NOT NULL, - "updated_time" TIMESTAMP NOT NULL + "created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE "label" ( @@ -17,8 +17,8 @@ CREATE TABLE "label" ( "name" TEXT NOT NULL, "color" BIGINT NOT NULL CHECK ("color" >= 0 AND "color" <= 4294967295), "deleted_time" TIMESTAMP, - "created_time" TIMESTAMP NOT NULL, - "updated_time" TIMESTAMP NOT NULL + "created_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE "post_label" ( @@ -28,3 +28,24 @@ CREATE TABLE "post_label" ( FOREIGN KEY ("post_id") REFERENCES "post" ("id") ON DELETE CASCADE, FOREIGN KEY ("label_id") REFERENCES "label" ("id") ON DELETE CASCADE ); + + +-- Auto update `updated_time` trigger + +CREATE FUNCTION update_updated_time_column() RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_time = CURRENT_TIMESTAMP; + return NEW; +END; +$$ LANGUAGE 'plpgsql'; + +CREATE TRIGGER "update_post_updated_time" +BEFORE UPDATE ON "post" +FOR EACH ROW +EXECUTE FUNCTION update_updated_time_column(); + +CREATE TRIGGER "update_label_updated_time" +BEFORE UPDATE ON "label" +FOR EACH ROW +EXECUTE FUNCTION update_updated_time_column(); +