Skip to content
This repository has been archived by the owner on Mar 19, 2019. It is now read-only.

Commit

Permalink
feat(schema/bookbrainz): Add tables aiding storage of import data
Browse files Browse the repository at this point in the history
* Base table for imports storing import ids and types
        + bookbrainz.import
* Tables linking import and relevant data in entitytype_data tables
        + bookbrainz.creator_import
* Tables linking import and relevant data in entitytype_data tables
        + bookbrainz.creator_import
        + bookbrainz.editor_import
        + bookbrainz.publication_import
        + bookbrainz.publisher_import
        + bookbrainz.work_import
* Table to store votes cast to discard an import
        + bookbrainz.discard_votes
* Table to store all origin sources of imported data
        + bookbrainz.origin_import
* Table to store source metadata linked with import and (upon it's subsequent
    upgrade) with entity. The origin_name_id refers to the source of the import,
    a foreign key reference to origin_import. The origin_id is the designated
    id of the import data item at it's source.
    	+ bookbrainz.link_import
  • Loading branch information
shivam-tripathi committed May 19, 2018
1 parent 32c8e70 commit 33425ae
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions schemas/bookbrainz.sql
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,77 @@ CREATE TABLE bookbrainz._editor_entity_visits (
ALTER TABLE bookbrainz._editor_entity_visits ADD FOREIGN KEY (editor_id) REFERENCES bookbrainz.editor (id);
ALTER TABLE bookbrainz._editor_entity_visits ADD FOREIGN KEY (bbid) REFERENCES bookbrainz.entity (bbid);

CREATE TABLE IF NOT EXISTS bookbrainz.import (
id SERIAL PRIMARY KEY,
type bookbrainz.entity_type NOT NULL
);

CREATE TABLE IF NOT EXISTS bookbrainz.creator_import (
import_id INT PRIMARY KEY,
data_id INT
);
ALTER TABLE bookbrainz.creator_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.creator_import ADD FOREIGN KEY (data_id) REFERENCES bookbrainz.creator_data (id);

CREATE TABLE IF NOT EXISTS bookbrainz.edition_import (
import_id INT PRIMARY KEY,
data_id INT
);
ALTER TABLE bookbrainz.edition_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.edition_import ADD FOREIGN KEY (data_id) REFERENCES bookbrainz.edition_data (id);

CREATE TABLE IF NOT EXISTS bookbrainz.publication_import (
import_id INT PRIMARY KEY,
data_id INT
);
ALTER TABLE bookbrainz.publication_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.publication_import ADD FOREIGN KEY (data_id) REFERENCES bookbrainz.publication_data (id);

CREATE TABLE IF NOT EXISTS bookbrainz.publisher_import (
import_id INT PRIMARY KEY,
data_id INT
);
ALTER TABLE bookbrainz.publisher_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.publisher_import ADD FOREIGN KEY (data_id) REFERENCES bookbrainz.publisher_data (id);

CREATE TABLE IF NOT EXISTS bookbrainz.work_import (
import_id INT PRIMARY KEY,
data_id INT
);
ALTER TABLE bookbrainz.work_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.work_import ADD FOREIGN KEY (data_id) REFERENCES bookbrainz.work_data (id);

CREATE TABLE IF NOT EXISTS bookbrainz.discard_votes (
id SERIAL PRIMARY KEY,
import_id INT NOT NULL,
editor_id INT NOT NULL,
voted_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT timezone('UTC'::TEXT, now())
);
ALTER TABLE bookbrainz.discard_votes ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.discard_votes ADD FOREIGN KEY (editor_id) REFERENCES bookbrainz.editor (id);

CREATE TABLE IF NOT EXISTS bookbrainz.origin_import (
id SERIAL PRIMARY KEY,
value TEXT NOT NULL CHECK (value <> '')
);

CREATE TABLE IF NOT EXISTS bookbrainz.link_import (
import_id INT,
origin_name_id INT NOT NULL,
origin_id TEXT NOT NULL CHECK (origin_id <> ''),
imported_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT timezone('UTC'::TEXT, now()),
last_edited VARCHAR(10),
entity_id UUID DEFAULT NULL,
metadata jsonb,
PRIMARY KEY (
origin_name_id,
origin_id
)
);
ALTER TABLE bookbrainz.link_import ADD FOREIGN KEY (entity_id) REFERENCES bookbrainz.entity (bbid);
ALTER TABLE bookbrainz.link_import ADD FOREIGN KEY (import_id) REFERENCES bookbrainz.import (id);
ALTER TABLE bookbrainz.link_import ADD FOREIGN KEY (origin_name_id) REFERENCES bookbrainz.origin_import (id);

-- Views --

CREATE VIEW bookbrainz.creator AS
Expand Down

0 comments on commit 33425ae

Please sign in to comment.