55 lines
1.8 KiB
SQL
55 lines
1.8 KiB
SQL
CREATE TYPE public.userlevel AS ENUM ('Admin', 'User', 'Devel');
|
|
|
|
CREATE TABLE public.user ( id SERIAL PRIMARY KEY,
|
|
name character varying(250),
|
|
email character varying(250),
|
|
password character varying(255),
|
|
ftp_user character varying(250),
|
|
accesslevel public.userlevel,
|
|
owner_id integer NOT NULL REFERENCES public.user(id),
|
|
UNIQUE(email)
|
|
);
|
|
|
|
CREATE TABLE public.access_groups ( id SERIAL PRIMARY KEY,
|
|
name character varying(255) NOT NULL,
|
|
owner_id integer NOT NULL REFERENCES public.user(id)
|
|
);
|
|
|
|
CREATE TABLE public.user_access ( id SERIAL PRIMARY KEY,
|
|
user_id integer NOT NULL REFERENCES public.user(id),
|
|
access_group_id integer NOT NULL REFERENCES public.access_groups(id),
|
|
UNIQUE(user_id, access_group_id)
|
|
);
|
|
|
|
CREATE TABLE public.map ( id SERIAL PRIMARY KEY,
|
|
name character varying(50) NOT NULL,
|
|
description character varying(50) NOT NULL,
|
|
owner_id integer NOT NULL REFERENCES public.user(id)
|
|
);
|
|
|
|
CREATE TABLE public.map_access ( id SERIAL PRIMARY KEY,
|
|
map_id integer NOT NULL REFERENCES public.map(id),
|
|
access_group_id integer NOT NULL REFERENCES public.access_groups(id),
|
|
UNIQUE(map_id, access_group_id)
|
|
);
|
|
|
|
CREATE TABLE public.permalink ( id SERIAL PRIMARY KEY,
|
|
description character varying(255),
|
|
query character varying(255),
|
|
map_id integer NOT NULL REFERENCES public.map(id),
|
|
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + interval '1 hour',
|
|
visits integer NOT NULL DEFAULT 0,
|
|
visits_limit integer NOT NULL DEFAULT 1,
|
|
hash character varying(36) NOT NULL,
|
|
owner_id integer NOT NULL REFERENCES public.user(id)
|
|
);
|
|
|
|
CREATE TABLE public.signup ( id SERIAL PRIMARY KEY,
|
|
name character varying(250),
|
|
email character varying(250),
|
|
password character varying(250),
|
|
verify character varying(250),
|
|
UNIQUE(email)
|
|
);
|