From e3daf160359c3a21e4cf9dc1fd53aac41aba6c04 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Thu, 25 Jul 2019 18:03:04 +0200 Subject: [PATCH] feature #3: create table article --- resources/sql/migrations/0000-init.down.sql | 4 +++ resources/sql/migrations/0000-init.up.sql | 33 +++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 resources/sql/migrations/0000-init.down.sql create mode 100644 resources/sql/migrations/0000-init.up.sql diff --git a/resources/sql/migrations/0000-init.down.sql b/resources/sql/migrations/0000-init.down.sql new file mode 100644 index 0000000..683caae --- /dev/null +++ b/resources/sql/migrations/0000-init.down.sql @@ -0,0 +1,4 @@ +drop trigger generate_version_number_trigger on article; +drop table article; +drop function generate_version_number(regclass, uuid); +drop function set_version_number(); \ No newline at end of file diff --git a/resources/sql/migrations/0000-init.up.sql b/resources/sql/migrations/0000-init.up.sql new file mode 100644 index 0000000..6607a36 --- /dev/null +++ b/resources/sql/migrations/0000-init.up.sql @@ -0,0 +1,33 @@ +create or replace function generate_version_number(tablename regclass, version_id uuid) returns int + language plpgsql as +$$ +begin + return random(); -- TODO +end; +$$; + +create or replace function set_version_number() returns trigger + language plpgsql as +$$ +begin + new.version_number = generate_version_number(TG_TABLE_NAME::regclass, new.version_id); +end; +$$; + +create table article +( + id uuid default uuid_generate_v4() not null, + version_id uuid default uuid_generate_v4() not null, + version_number int not null, + title text not null, + annonymous boolean default false not null, + content text not null, + description text, + tags varchar(32)[] default '{}' not null, + created_at timestamptz default now() not null +); + +CREATE TRIGGER generate_version_number_trigger + BEFORE INSERT + ON article +EXECUTE PROCEDURE set_version_number();