diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-09 15:58:27 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-09 16:02:09 -0700 |
commit | 7c79a9919d042d3a17a9011e5f3aa25801424a84 (patch) | |
tree | 4ce94e37b255c8d9a685b8151af0849613645931 | |
parent | cb37df1888f77654d0e2d7f0a96093a26014ed64 (diff) | |
download | fatcat-7c79a9919d042d3a17a9011e5f3aa25801424a84.tar.gz fatcat-7c79a9919d042d3a17a9011e5f3aa25801424a84.zip |
schema fixes
-rw-r--r-- | fatcat-go/fatcat-schema.sql | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/fatcat-go/fatcat-schema.sql b/fatcat-go/fatcat-schema.sql index 4a5973ec..f5983371 100644 --- a/fatcat-go/fatcat-schema.sql +++ b/fatcat-go/fatcat-schema.sql @@ -3,40 +3,49 @@ 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 UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + 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 -) + active_editgroup_id BIGINT -- REFERENCES( editgroup(id) via ALTER below +); CREATE TABLE editgroup ( id BIGSERIAL PRIMARY KEY, extra_json JSON, - editor_id BIGINT REFERENCES(editor.id) NOT NULL, - description TEXT, -) + editor_id BIGSERIAL REFERENCES editor(id) NOT NULL, + description TEXT +); -ALTER TABLE editor ADD CONSTRAINT editor_eg_id FOREIGN KEY (editgroup.id) +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, -) + 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, -) + orcid TEXT +); -- Could denormalize a "is_live" flag into revision tables, to make indices -- more efficient @@ -45,15 +54,15 @@ 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 BIGINT REFERENCES(id), -) + 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 BIGINT REFERENCES(creator_ident.id) NOT NULL, - rev_id BIGINT REFERENCES(creator_rev.id), - redirect_id BIGINT REFERENCES(creator_ident.id), - editgroup_id BIGINT REFERENCES(editgroup.id) NOT NULL, -) + 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 +); |