From 3e59934f8ce881c0853825e6dbbd602fbc8be9b4 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Mon, 31 Jul 2023 18:23:00 +0800 Subject: [PATCH] sqlc: add fake set_modified_on function for pgsql as trigger to update modified_on timestamp automitic --- .../schema/0006_setup_modified_on.down.sql | 1 + .../schema/0006_setup_modified_on.up.sql | 21 ++++++++++++++++++ scripts/paopao-postgres.sql | 22 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.down.sql create mode 100644 internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.up.sql diff --git a/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.down.sql b/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.down.sql new file mode 100644 index 00000000..acc4911e --- /dev/null +++ b/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.down.sql @@ -0,0 +1 @@ +-- just empty diff --git a/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.up.sql b/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.up.sql new file mode 100644 index 00000000..3ee4f628 --- /dev/null +++ b/internal/dao/slonik/sqlc/postgres/schema/0006_setup_modified_on.up.sql @@ -0,0 +1,21 @@ +-- create or replace function set_modified_on() +-- returns trigger as +-- $$ +-- begin +-- NEW.modified_on = now(); +-- return NEW; +-- end; +-- $$ language plpgsql; + +-- create or replace function trigger_modified_on(tablename regclass) +-- returns void as +-- $$ +-- begin +-- execute format('CREATE TRIGGER set_modified_on +-- BEFORE UPDATE +-- ON %s +-- FOR EACH ROW +-- WHEN (OLD is distinct from NEW) +-- EXECUTE FUNCTION set_modified_on();', tablename); +-- end; +-- $$ language plpgsql; diff --git a/scripts/paopao-postgres.sql b/scripts/paopao-postgres.sql index 9cc7a14f..ab342b92 100644 --- a/scripts/paopao-postgres.sql +++ b/scripts/paopao-postgres.sql @@ -4,6 +4,28 @@ SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off; +-- create or replace function set_modified_on() +-- returns trigger as +-- $$ +-- begin +-- NEW.modified_on = now(); +-- return NEW; +-- end; +-- $$ language plpgsql; + +-- create or replace function trigger_modified_on(tablename regclass) +-- returns void as +-- $$ +-- begin +-- execute format('CREATE TRIGGER set_modified_on +-- BEFORE UPDATE +-- ON %s +-- FOR EACH ROW +-- WHEN (OLD is distinct from NEW) +-- EXECUTE FUNCTION set_modified_on();', tablename); +-- end; +-- $$ language plpgsql; + DROP TABLE IF EXISTS p_attachment; CREATE TABLE p_attachment ( id BIGSERIAL PRIMARY KEY,