Skip to content

Commit

Permalink
fix: Updated sql migration script (entity renaming)
Browse files Browse the repository at this point in the history
In case the bookbrainz.import table does not exist, don't create the views for import entities
  • Loading branch information
MonkeyDo committed May 7, 2019
1 parent 952a315 commit a6d2602
Showing 1 changed file with 126 additions and 111 deletions.
237 changes: 126 additions & 111 deletions sql/migrations/2019-04/up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -169,117 +169,132 @@ BEGIN TRANSACTION;
LEFT JOIN bookbrainz.alias_set als ON psd.alias_set_id = als.id
WHERE e.type = 'Publisher';

CREATE OR REPLACE VIEW bookbrainz.author_import AS
SELECT
import.id AS import_id,
author_data.id as data_id,
author_data.annotation_id,
author_data.disambiguation_id,
alias_set.default_alias_id,
author_data.begin_year,
author_data.begin_month,
author_data.begin_day,
author_data.end_year,
author_data.end_month,
author_data.end_day,
author_data.begin_area_id,
author_data.end_area_id,
author_data.ended,
author_data.area_id,
author_data.gender_id,
author_data.type_id,
author_data.alias_set_id,
author_data.identifier_set_id,
import.type
FROM bookbrainz.import import
LEFT JOIN bookbrainz.author_import_header author_import_header ON import.id = author_import_header.import_id
LEFT JOIN bookbrainz.author_data author_data ON author_import_header.data_id = author_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON author_data.alias_set_id = alias_set.id
WHERE import.type = 'Author';


CREATE OR REPLACE VIEW bookbrainz.edition_import AS
SELECT
import.id AS import_id,
edition_data.id as data_id,
edition_data.disambiguation_id,
alias_set.default_alias_id,
edition_data.width,
edition_data.height,
edition_data.depth,
edition_data.weight,
edition_data.pages,
edition_data.format_id,
edition_data.status_id,
edition_data.alias_set_id,
edition_data.identifier_set_id,
import.type,
edition_data.language_set_id,
edition_data.release_event_set_id
FROM bookbrainz.import import
LEFT JOIN bookbrainz.edition_import_header edition_import_header ON import.id = edition_import_header.import_id
LEFT JOIN bookbrainz.edition_data edition_data ON edition_import_header.data_id = edition_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON edition_data.alias_set_id = alias_set.id
WHERE import.type = 'Edition';

CREATE OR REPLACE VIEW bookbrainz.publisher_import AS
SELECT
import.id AS import_id,
publisher_data.id as data_id,
publisher_data.disambiguation_id,
alias_set.default_alias_id,
publisher_data.begin_year,
publisher_data.begin_month,
publisher_data.begin_day,
publisher_data.end_year,
publisher_data.end_month,
publisher_data.end_day,
publisher_data.ended,
publisher_data.area_id,
publisher_data.type_id,
publisher_data.alias_set_id,
publisher_data.identifier_set_id,
import.type
FROM
bookbrainz.import import
LEFT JOIN bookbrainz.publisher_import_header publisher_import_header ON import.id = publisher_import_header.import_id
LEFT JOIN bookbrainz.publisher_data publisher_data ON publisher_import_header.data_id = publisher_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON publisher_data.alias_set_id = alias_set.id
WHERE import.type = 'Publisher';

CREATE OR REPLACE VIEW bookbrainz.edition_group_import AS
SELECT
import.id AS import_id,
edition_group_data.id as data_id,
edition_group_data.disambiguation_id,
alias_set.default_alias_id,
edition_group_data.type_id,
edition_group_data.alias_set_id,
edition_group_data.identifier_set_id,
import.type
FROM bookbrainz.import import
LEFT JOIN bookbrainz.edition_group_import_header edition_group_import_header ON import.id = edition_group_import_header.import_id
LEFT JOIN bookbrainz.edition_group_data edition_group_data ON edition_group_import_header.data_id = edition_group_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON edition_group_data.alias_set_id = alias_set.id
WHERE import.type = 'EditionGroup';

CREATE OR REPLACE VIEW bookbrainz.work_import AS
SELECT
import.id as import_id,
work_data.id AS data_id,
work_data.annotation_id,
work_data.disambiguation_id,
alias_set.default_alias_id,
work_data.type_id,
work_data.alias_set_id,
work_data.identifier_set_id,
import.type,
work_data.language_set_id
FROM bookbrainz.import import
LEFT JOIN bookbrainz.work_import_header work_import_header ON import.id = work_import_header.import_id
LEFT JOIN bookbrainz.work_data work_data ON work_import_header.data_id = work_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON work_data.alias_set_id = alias_set.id
WHERE import.type = 'Work';
-- Only create the following views if the import table exists
-- (At the time of writing this script imports are a WIP)
DO $$
DECLARE
import_table VARCHAR(17);
BEGIN
-- to_regclass needs PGSQL >= 9.4
SELECT to_regclass('bookbrainz.import') INTO import_table;
IF import_table IS NOT NULL THEN

raise notice 'import table exists, replacing entity import views';

CREATE OR REPLACE VIEW bookbrainz.author_import AS
SELECT
import.id AS import_id,
author_data.id as data_id,
author_data.annotation_id,
author_data.disambiguation_id,
alias_set.default_alias_id,
author_data.begin_year,
author_data.begin_month,
author_data.begin_day,
author_data.end_year,
author_data.end_month,
author_data.end_day,
author_data.begin_area_id,
author_data.end_area_id,
author_data.ended,
author_data.area_id,
author_data.gender_id,
author_data.type_id,
author_data.alias_set_id,
author_data.identifier_set_id,
import.type
FROM bookbrainz.import import
LEFT JOIN bookbrainz.author_import_header author_import_header ON import.id = author_import_header.import_id
LEFT JOIN bookbrainz.author_data author_data ON author_import_header.data_id = author_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON author_data.alias_set_id = alias_set.id
WHERE import.type = 'Author';


CREATE OR REPLACE VIEW bookbrainz.edition_import AS
SELECT
import.id AS import_id,
edition_data.id as data_id,
edition_data.disambiguation_id,
alias_set.default_alias_id,
edition_data.width,
edition_data.height,
edition_data.depth,
edition_data.weight,
edition_data.pages,
edition_data.format_id,
edition_data.status_id,
edition_data.alias_set_id,
edition_data.identifier_set_id,
import.type,
edition_data.language_set_id,
edition_data.release_event_set_id
FROM bookbrainz.import import
LEFT JOIN bookbrainz.edition_import_header edition_import_header ON import.id = edition_import_header.import_id
LEFT JOIN bookbrainz.edition_data edition_data ON edition_import_header.data_id = edition_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON edition_data.alias_set_id = alias_set.id
WHERE import.type = 'Edition';

CREATE OR REPLACE VIEW bookbrainz.publisher_import AS
SELECT
import.id AS import_id,
publisher_data.id as data_id,
publisher_data.disambiguation_id,
alias_set.default_alias_id,
publisher_data.begin_year,
publisher_data.begin_month,
publisher_data.begin_day,
publisher_data.end_year,
publisher_data.end_month,
publisher_data.end_day,
publisher_data.ended,
publisher_data.area_id,
publisher_data.type_id,
publisher_data.alias_set_id,
publisher_data.identifier_set_id,
import.type
FROM
bookbrainz.import import
LEFT JOIN bookbrainz.publisher_import_header publisher_import_header ON import.id = publisher_import_header.import_id
LEFT JOIN bookbrainz.publisher_data publisher_data ON publisher_import_header.data_id = publisher_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON publisher_data.alias_set_id = alias_set.id
WHERE import.type = 'Publisher';

CREATE OR REPLACE VIEW bookbrainz.edition_group_import AS
SELECT
import.id AS import_id,
edition_group_data.id as data_id,
edition_group_data.disambiguation_id,
alias_set.default_alias_id,
edition_group_data.type_id,
edition_group_data.alias_set_id,
edition_group_data.identifier_set_id,
import.type
FROM bookbrainz.import import
LEFT JOIN bookbrainz.edition_group_import_header edition_group_import_header ON import.id = edition_group_import_header.import_id
LEFT JOIN bookbrainz.edition_group_data edition_group_data ON edition_group_import_header.data_id = edition_group_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON edition_group_data.alias_set_id = alias_set.id
WHERE import.type = 'EditionGroup';

CREATE OR REPLACE VIEW bookbrainz.work_import AS
SELECT
import.id as import_id,
work_data.id AS data_id,
work_data.annotation_id,
work_data.disambiguation_id,
alias_set.default_alias_id,
work_data.type_id,
work_data.alias_set_id,
work_data.identifier_set_id,
import.type,
work_data.language_set_id
FROM bookbrainz.import import
LEFT JOIN bookbrainz.work_import_header work_import_header ON import.id = work_import_header.import_id
LEFT JOIN bookbrainz.work_data work_data ON work_import_header.data_id = work_data.id
LEFT JOIN bookbrainz.alias_set alias_set ON work_data.alias_set_id = alias_set.id
WHERE import.type = 'Work';

END IF;
END $$;

---------------------- ****** NOTICE ****** ----------------------
-- Don't forget to run the create_trigger.sql script afterwards --
Expand Down

0 comments on commit a6d2602

Please sign in to comment.