diff options
Diffstat (limited to 'golang/fatcat-schema.sql')
-rw-r--r-- | golang/fatcat-schema.sql | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/golang/fatcat-schema.sql b/golang/fatcat-schema.sql deleted file mode 100644 index f5983371..00000000 --- a/golang/fatcat-schema.sql +++ /dev/null @@ -1,68 +0,0 @@ - --- written for Postgres 9.6 with OSSP extension for UUIDs - -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - -DROP TABLE IF EXISTS editor CASCADE; -DROP TABLE IF EXISTS editgroup CASCADE; -DROP TABLE IF EXISTS changelog CASCADE; -DROP TABLE IF EXISTS creator_rev CASCADE; -DROP TABLE IF EXISTS creator_ident CASCADE; -DROP TABLE IF EXISTS creator_edit CASCADE; - --- uuid_generate_v1mc: timestamp ordered, random MAC address --- uuid_generate_v4: totally random - --- NB: could use LIKE clause, or "composite types" - -CREATE TABLE editor ( - id BIGSERIAL PRIMARY KEY, - username TEXT NOT NULL, - is_admin BOOLEAN NOT NULL DEFAULT false, - active_editgroup_id BIGINT -- REFERENCES( editgroup(id) via ALTER below -); - -CREATE TABLE editgroup ( - id BIGSERIAL PRIMARY KEY, - extra_json JSON, - editor_id BIGSERIAL REFERENCES editor(id) NOT NULL, - description TEXT -); - -ALTER TABLE editor - ADD CONSTRAINT editor_editgroupid_fkey FOREIGN KEY (active_editgroup_id) - REFERENCES editgroup(id); - -CREATE TABLE changelog ( - id BIGSERIAL PRIMARY KEY, - editgroup_id BIGINT REFERENCES editgroup(id) NOT NULL, - timestamp TIMESTAMP WITHOUT TIME ZONE DEFAULT now() -); - -CREATE TABLE creator_rev ( - id BIGSERIAL PRIMARY KEY, - extra_json JSON, - - name TEXT, - orcid TEXT -); - --- Could denormalize a "is_live" flag into revision tables, to make indices --- more efficient -CREATE INDEX creator_rev_orcid_idx ON creator_rev(orcid) WHERE orcid IS NOT NULL; - -CREATE TABLE creator_ident ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - is_live BOOL NOT NULL, - rev_id BIGINT REFERENCES creator_rev(id), - redirect_id UUID REFERENCES creator_ident(id) -); - -CREATE TABLE creator_edit ( - id BIGSERIAL PRIMARY KEY, - extra_json JSON, - ident_id UUID REFERENCES creator_ident(id) NOT NULL, - rev_id BIGINT REFERENCES creator_rev(id), - redirect_id UUID REFERENCES creator_ident(id), - editgroup_id BIGINT REFERENCES editgroup(id) NOT NULL -); |