wip
This commit is contained in:
parent
515c748e14
commit
bd4a475923
23 changed files with 1217 additions and 192 deletions
46
sql/00002.sql
Normal file
46
sql/00002.sql
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
CREATE EXTENSION pg_trgm;
|
||||
|
||||
CREATE TABLE public.crypto_key (
|
||||
id serial4 NOT NULL,
|
||||
user_id int4 NOT NULL,
|
||||
description varchar(255) DEFAULT ''::character varying NOT NULL,
|
||||
"key" bpchar(144) NOT NULL,
|
||||
CONSTRAINT crypto_key_pk PRIMARY KEY (id),
|
||||
CONSTRAINT crypto_user_description_un UNIQUE (user_id, description),
|
||||
CONSTRAINT crypto_key_user_fk FOREIGN KEY (user_id) REFERENCES public."user"(id) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
CREATE TABLE public.node (
|
||||
id serial4 NOT NULL,
|
||||
user_id int4 NOT NULL,
|
||||
parent_id int4 NULL,
|
||||
"name" varchar(256) DEFAULT ''::character varying NOT NULL,
|
||||
"content" text DEFAULT ''::text NOT NULL,
|
||||
updated timestamptz DEFAULT now() NOT NULL,
|
||||
crypto_key_id int4 NULL,
|
||||
content_encrypted text DEFAULT ''::text NOT NULL,
|
||||
markdown bool DEFAULT false NOT NULL,
|
||||
CONSTRAINT name_length CHECK ((length(TRIM(BOTH FROM name)) > 0)),
|
||||
CONSTRAINT node_pk PRIMARY KEY (id),
|
||||
CONSTRAINT crypto_key_fk FOREIGN KEY (crypto_key_id) REFERENCES public.crypto_key(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT node_fk FOREIGN KEY (parent_id) REFERENCES public.node(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
CONSTRAINT node_user_fk FOREIGN KEY (user_id) REFERENCES public."user"(id) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
);
|
||||
CREATE INDEX node_search_index ON public.node USING gin (name gin_trgm_ops, content gin_trgm_ops);
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION node_update_timestamp()
|
||||
RETURNS TRIGGER
|
||||
LANGUAGE PLPGSQL
|
||||
AS $$
|
||||
BEGIN
|
||||
IF NEW.updated = OLD.updated THEN
|
||||
UPDATE node SET updated = NOW() WHERE id=NEW.id;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
CREATE OR REPLACE TRIGGER node_update AFTER UPDATE ON node
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE node_update_timestamp()
|
||||
Loading…
Add table
Add a link
Reference in a new issue