28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
CREATE TABLE public."type" (
|
|
id serial4 NOT NULL,
|
|
"name" varchar NOT NULL,
|
|
"schema" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
updated timestamptz DEFAULT now() NOT NULL,
|
|
CONSTRAINT type_pk PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE public.node (
|
|
id serial4 NOT NULL,
|
|
"name" varchar NOT NULL,
|
|
type_id int4 NOT NULL,
|
|
updated timestamptz DEFAULT now() NOT NULL,
|
|
"data" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
CONSTRAINT node_pk PRIMARY KEY (id),
|
|
CONSTRAINT node_type_fk FOREIGN KEY (type_id) REFERENCES public."type"(id) ON DELETE RESTRICT ON UPDATE RESTRICT
|
|
);
|
|
|
|
CREATE TABLE public."connection" (
|
|
parent int4 NOT NULL,
|
|
child int4 NOT NULL,
|
|
created timestamptz DEFAULT now() NOT NULL,
|
|
CONSTRAINT connection_from_fk FOREIGN KEY (parent) REFERENCES public.node(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT connection_to_fk FOREIGN KEY (child) REFERENCES public.node(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
INSERT INTO public.type(id, name, schema) VALUES(0, 'root_node', '{"$id": "https://data.ahall.se/schema/root_node.json", "type": "object", "title": "Root node", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [], "properties": {}, "description": "Graph start node"}');
|
|
INSERT INTO public.node(id, name, type_id) VALUES(0, 'root_node', 0);
|