mirror of https://git.sr.ht/~sircmpwn/hub.sr.ht
Add schema.sql
This commit is contained in:
parent
820b86cf9a
commit
2f890ff9d3
|
@ -0,0 +1,100 @@
|
|||
CREATE TYPE visibility AS ENUM (
|
||||
'PUBLIC',
|
||||
'PRIVATE',
|
||||
'UNLISTED'
|
||||
);
|
||||
|
||||
CREATE TABLE "user" (
|
||||
id serial PRIMARY KEY,
|
||||
created timestamp without time zone NOT NULL,
|
||||
updated timestamp without time zone NOT NULL,
|
||||
username character varying(256),
|
||||
email character varying(256) NOT NULL,
|
||||
user_type character varying NOT NULL,
|
||||
url character varying(256),
|
||||
location character varying(256),
|
||||
bio character varying(4096),
|
||||
suspension_notice character varying(4096),
|
||||
oauth_token character varying(256),
|
||||
oauth_token_expires timestamp without time zone,
|
||||
oauth_token_scopes character varying,
|
||||
oauth_revocation_token character varying(256)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX ix_user_username ON "user" USING btree (username);
|
||||
|
||||
CREATE TABLE project (
|
||||
id serial PRIMARY KEY,
|
||||
created timestamp without time zone NOT NULL,
|
||||
updated timestamp without time zone NOT NULL,
|
||||
owner_id integer NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
name character varying(128) NOT NULL,
|
||||
description character varying(512) NOT NULL,
|
||||
website character varying,
|
||||
visibility visibility DEFAULT 'UNLISTED'::visibility NOT NULL,
|
||||
checklist_complete boolean DEFAULT false NOT NULL,
|
||||
summary_repo_id integer,
|
||||
tags character varying(16)[] DEFAULT '{}'::character varying[] NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE features (
|
||||
id serial PRIMARY KEY,
|
||||
created timestamp without time zone NOT NULL,
|
||||
project_id integer NOT NULL REFERENCES project(id) ON DELETE CASCADE,
|
||||
summary character varying NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE mailing_list (
|
||||
id serial PRIMARY KEY,
|
||||
remote_id integer NOT NULL,
|
||||
created timestamp without time zone NOT NULL,
|
||||
updated timestamp without time zone NOT NULL,
|
||||
project_id integer NOT NULL REFERENCES project(id) ON DELETE CASCADE,
|
||||
owner_id integer NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
name character varying(128) NOT NULL,
|
||||
description character varying,
|
||||
visibility visibility DEFAULT 'UNLISTED'::visibility NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE source_repo (
|
||||
id serial PRIMARY KEY,
|
||||
remote_id integer NOT NULL,
|
||||
created timestamp without time zone NOT NULL,
|
||||
updated timestamp without time zone NOT NULL,
|
||||
project_id integer NOT NULL REFERENCES project(id) ON DELETE CASCADE,
|
||||
owner_id integer NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
name character varying(128) NOT NULL,
|
||||
description character varying,
|
||||
repo_type character varying NOT NULL,
|
||||
visibility visibility DEFAULT 'UNLISTED'::visibility NOT NULL,
|
||||
CONSTRAINT project_source_repo_unique UNIQUE (project_id, remote_id, repo_type)
|
||||
);
|
||||
|
||||
ALTER TABLE project
|
||||
ADD CONSTRAINT project_summary_repo_id_fkey FOREIGN KEY (summary_repo_id) REFERENCES source_repo(id) ON DELETE CASCADE;
|
||||
|
||||
CREATE TABLE tracker (
|
||||
id serial PRIMARY KEY,
|
||||
remote_id integer NOT NULL,
|
||||
created timestamp without time zone NOT NULL,
|
||||
updated timestamp without time zone NOT NULL,
|
||||
project_id integer NOT NULL REFERENCES project(id) ON DELETE CASCADE,
|
||||
owner_id integer NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
name character varying(128) NOT NULL,
|
||||
description character varying,
|
||||
visibility visibility DEFAULT 'UNLISTED'::visibility NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE event (
|
||||
id serial PRIMARY KEY,
|
||||
created timestamp without time zone NOT NULL,
|
||||
project_id integer NOT NULL REFERENCES project(id) ON DELETE CASCADE,
|
||||
user_id integer REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
event_type character varying NOT NULL,
|
||||
source_repo_id integer REFERENCES source_repo(id) ON DELETE CASCADE,
|
||||
mailing_list_id integer REFERENCES mailing_list(id) ON DELETE CASCADE,
|
||||
tracker_id integer REFERENCES tracker(id) ON DELETE CASCADE,
|
||||
external_source character varying,
|
||||
external_summary character varying,
|
||||
external_details character varying
|
||||
);
|
Loading…
Reference in New Issue