mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 11:47:25 +01:00
Remove old migrations
This commit is contained in:
parent
f2dfd4fcd4
commit
6876a6edd7
9 changed files with 24 additions and 270 deletions
|
|
@ -1,13 +0,0 @@
|
||||||
PRAGMA defer_foreign_keys;
|
|
||||||
|
|
||||||
DROP TABLE "persons";
|
|
||||||
DROP TABLE "instruments";
|
|
||||||
DROP TABLE "works";
|
|
||||||
DROP TABLE "instrumentations";
|
|
||||||
DROP TABLE "work_parts";
|
|
||||||
DROP TABLE "ensembles";
|
|
||||||
DROP TABLE "recordings";
|
|
||||||
DROP TABLE "performances";
|
|
||||||
DROP TABLE "mediums";
|
|
||||||
DROP TABLE "tracks";
|
|
||||||
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
CREATE TABLE "persons" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"first_name" TEXT NOT NULL,
|
|
||||||
"last_name" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "instruments" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"name" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "works" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"composer" TEXT NOT NULL REFERENCES "persons"("id"),
|
|
||||||
"title" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "instrumentations" (
|
|
||||||
"id" BIGINT NOT NULL PRIMARY KEY,
|
|
||||||
"work" TEXT NOT NULL REFERENCES "works"("id") ON DELETE CASCADE,
|
|
||||||
"instrument" TEXT NOT NULL REFERENCES "instruments"("id") ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "work_parts" (
|
|
||||||
"id" BIGINT NOT NULL PRIMARY KEY,
|
|
||||||
"work" TEXT NOT NULL REFERENCES "works"("id") ON DELETE CASCADE,
|
|
||||||
"part_index" BIGINT NOT NULL,
|
|
||||||
"title" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "ensembles" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"name" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "recordings" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"work" TEXT NOT NULL REFERENCES "works"("id"),
|
|
||||||
"comment" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "performances" (
|
|
||||||
"id" BIGINT NOT NULL PRIMARY KEY,
|
|
||||||
"recording" TEXT NOT NULL REFERENCES "recordings"("id") ON DELETE CASCADE,
|
|
||||||
"person" TEXT REFERENCES "persons"("id"),
|
|
||||||
"ensemble" TEXT REFERENCES "ensembles"("id"),
|
|
||||||
"role" TEXT REFERENCES "instruments"("id")
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "mediums" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"name" TEXT NOT NULL,
|
|
||||||
"discid" TEXT
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE "tracks" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"medium" TEXT NOT NULL REFERENCES "mediums"("id") ON DELETE CASCADE,
|
|
||||||
"index" INTEGER NOT NULL,
|
|
||||||
"recording" TEXT NOT NULL REFERENCES "recordings"("id"),
|
|
||||||
"work_parts" TEXT NOT NULL,
|
|
||||||
"source_index" INTEGER NOT NULL,
|
|
||||||
"path" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
ALTER TABLE "persons" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "persons" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "instruments" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "instruments" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "works" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "works" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "ensembles" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "ensembles" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "recordings" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "recordings" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "mediums" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "mediums" DROP COLUMN "last_played";
|
|
||||||
|
|
||||||
ALTER TABLE "tracks" DROP COLUMN "last_used";
|
|
||||||
ALTER TABLE "tracks" DROP COLUMN "last_played";
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
ALTER TABLE "persons" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "persons" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "instruments" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "instruments" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "works" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "works" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "ensembles" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "ensembles" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "recordings" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "recordings" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "mediums" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "mediums" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
ALTER TABLE "tracks" ADD COLUMN "last_used" BIGINT;
|
|
||||||
ALTER TABLE "tracks" ADD COLUMN "last_played" BIGINT;
|
|
||||||
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
CREATE TABLE "old_tracks" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"medium" TEXT NOT NULL REFERENCES "mediums"("id") ON DELETE CASCADE,
|
|
||||||
"index" INTEGER NOT NULL,
|
|
||||||
"recording" TEXT NOT NULL REFERENCES "recordings"("id"),
|
|
||||||
"work_parts" TEXT NOT NULL,
|
|
||||||
"source_index" INTEGER NOT NULL,
|
|
||||||
"path" TEXT NOT NULL,
|
|
||||||
"last_used" BIGINT,
|
|
||||||
"last_played" BIGINT
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO "old_tracks" SELECT * FROM "tracks" WHERE "medium" IS NOT NULL;
|
|
||||||
DROP TABLE "tracks";
|
|
||||||
ALTER TABLE "old_tracks" RENAME TO "tracks";
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
CREATE TABLE "new_tracks" (
|
|
||||||
"id" TEXT NOT NULL PRIMARY KEY,
|
|
||||||
"medium" TEXT REFERENCES "mediums"("id") ON DELETE CASCADE,
|
|
||||||
"index" INTEGER NOT NULL,
|
|
||||||
"recording" TEXT NOT NULL REFERENCES "recordings"("id"),
|
|
||||||
"work_parts" TEXT NOT NULL,
|
|
||||||
"source_index" INTEGER NOT NULL,
|
|
||||||
"path" TEXT NOT NULL,
|
|
||||||
"last_used" BIGINT,
|
|
||||||
"last_played" BIGINT
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO "new_tracks" SELECT * FROM "tracks";
|
|
||||||
DROP TABLE "tracks";
|
|
||||||
ALTER TABLE "new_tracks" RENAME TO "tracks";
|
|
||||||
|
|
@ -1 +1,17 @@
|
||||||
-- This migration is intended to become the initial schema.
|
DROP TABLE persons;
|
||||||
|
DROP TABLE roles;
|
||||||
|
DROP TABLE instruments;
|
||||||
|
DROP TABLE works;
|
||||||
|
DROP TABLE work_persons;
|
||||||
|
DROP TABLE work_instruments;
|
||||||
|
DROP TABLE ensembles;
|
||||||
|
DROP TABLE ensemble_persons;
|
||||||
|
DROP TABLE recordings;
|
||||||
|
DROP TABLE recording_persons;
|
||||||
|
DROP TABLE recording_ensembles;
|
||||||
|
DROP TABLE tracks;
|
||||||
|
DROP TABLE track_works;
|
||||||
|
DROP TABLE mediums;
|
||||||
|
DROP TABLE albums;
|
||||||
|
DROP TABLE album_recordings;
|
||||||
|
DROP TABLE album_mediums;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
CREATE TABLE persons_new (
|
CREATE TABLE persons (
|
||||||
person_id TEXT NOT NULL PRIMARY KEY,
|
person_id TEXT NOT NULL PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
@ -15,7 +15,7 @@ CREATE TABLE roles (
|
||||||
last_used_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
last_used_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE instruments_new (
|
CREATE TABLE instruments (
|
||||||
instrument_id TEXT NOT NULL PRIMARY KEY,
|
instrument_id TEXT NOT NULL PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
@ -24,7 +24,7 @@ CREATE TABLE instruments_new (
|
||||||
last_played_at TIMESTAMP
|
last_played_at TIMESTAMP
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE works_new (
|
CREATE TABLE works (
|
||||||
work_id TEXT NOT NULL PRIMARY KEY,
|
work_id TEXT NOT NULL PRIMARY KEY,
|
||||||
parent_work_id TEXT REFERENCES works(work_id),
|
parent_work_id TEXT REFERENCES works(work_id),
|
||||||
sequence_number INTEGER,
|
sequence_number INTEGER,
|
||||||
|
|
@ -50,7 +50,7 @@ CREATE TABLE work_instruments (
|
||||||
PRIMARY KEY (work_id, instrument_id)
|
PRIMARY KEY (work_id, instrument_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE ensembles_new (
|
CREATE TABLE ensembles (
|
||||||
ensemble_id TEXT NOT NULL PRIMARY KEY,
|
ensemble_id TEXT NOT NULL PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
@ -67,7 +67,7 @@ CREATE TABLE ensemble_persons (
|
||||||
PRIMARY KEY (ensemble_id, person_id, instrument_id)
|
PRIMARY KEY (ensemble_id, person_id, instrument_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE recordings_new (
|
CREATE TABLE recordings (
|
||||||
recording_id TEXT NOT NULL PRIMARY KEY,
|
recording_id TEXT NOT NULL PRIMARY KEY,
|
||||||
work_id TEXT NOT NULL REFERENCES works(work_id),
|
work_id TEXT NOT NULL REFERENCES works(work_id),
|
||||||
year INTEGER,
|
year INTEGER,
|
||||||
|
|
@ -94,7 +94,7 @@ CREATE TABLE recording_ensembles (
|
||||||
PRIMARY KEY (recording_id, ensemble_id, role_id)
|
PRIMARY KEY (recording_id, ensemble_id, role_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE tracks_new (
|
CREATE TABLE tracks (
|
||||||
track_id TEXT NOT NULL PRIMARY KEY,
|
track_id TEXT NOT NULL PRIMARY KEY,
|
||||||
recording_id TEXT NOT NULL REFERENCES recordings(recording_id),
|
recording_id TEXT NOT NULL REFERENCES recordings(recording_id),
|
||||||
recording_index INTEGER NOT NULL,
|
recording_index INTEGER NOT NULL,
|
||||||
|
|
@ -114,7 +114,7 @@ CREATE TABLE track_works (
|
||||||
PRIMARY KEY (track_id, work_id)
|
PRIMARY KEY (track_id, work_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE mediums_new (
|
CREATE TABLE mediums (
|
||||||
medium_id TEXT NOT NULL PRIMARY KEY,
|
medium_id TEXT NOT NULL PRIMARY KEY,
|
||||||
discid TEXT NOT NULL,
|
discid TEXT NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
@ -145,106 +145,3 @@ CREATE TABLE album_mediums (
|
||||||
sequence_number INTEGER NOT NULL,
|
sequence_number INTEGER NOT NULL,
|
||||||
PRIMARY KEY (album_id, medium_id)
|
PRIMARY KEY (album_id, medium_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO persons_new (person_id, name)
|
|
||||||
SELECT id, json_set('{}', '$.generic', first_name || ' ' || last_name)
|
|
||||||
FROM persons;
|
|
||||||
|
|
||||||
INSERT INTO roles (role_id, name)
|
|
||||||
VALUES ('380d7e09eb2f49c1a90db2ba4acb6ffd', json_set('{}', '$.generic', 'Composer'));
|
|
||||||
|
|
||||||
INSERT INTO roles (role_id, name)
|
|
||||||
VALUES ('28ff0aeb11c041a6916d93e9b4884eef', json_set('{}', '$.generic', 'Performer'));
|
|
||||||
|
|
||||||
INSERT INTO instruments_new (instrument_id, name)
|
|
||||||
SELECT id, json_set('{}', '$.generic', name)
|
|
||||||
FROM instruments;
|
|
||||||
|
|
||||||
INSERT INTO works_new (work_id, name)
|
|
||||||
SELECT id, json_set('{}', '$.generic', title)
|
|
||||||
FROM works;
|
|
||||||
|
|
||||||
INSERT INTO works_new (work_id, parent_work_id, sequence_number, name)
|
|
||||||
SELECT id, work, part_index, json_set('{}', '$.generic', title)
|
|
||||||
FROM work_parts;
|
|
||||||
|
|
||||||
INSERT INTO work_persons (work_id, person_id, role_id, sequence_number)
|
|
||||||
SELECT id, composer, '380d7e09eb2f49c1a90db2ba4acb6ffd', 0
|
|
||||||
FROM works;
|
|
||||||
|
|
||||||
INSERT INTO work_instruments (work_id, instrument_id, sequence_number)
|
|
||||||
SELECT work, instrument, 0
|
|
||||||
FROM instrumentations;
|
|
||||||
|
|
||||||
INSERT INTO ensembles_new (ensemble_id, name)
|
|
||||||
SELECT id, json_set('{}', '$.generic', name)
|
|
||||||
FROM ensembles;
|
|
||||||
|
|
||||||
INSERT INTO recordings_new (recording_id, work_id, year)
|
|
||||||
SELECT id, work, CAST(comment as INTEGER)
|
|
||||||
FROM recordings;
|
|
||||||
|
|
||||||
UPDATE recordings_new
|
|
||||||
SET year = NULL
|
|
||||||
WHERE year <= 0;
|
|
||||||
|
|
||||||
INSERT INTO recording_persons (recording_id, person_id, role_id, instrument_id, sequence_number)
|
|
||||||
SELECT recording, person, '28ff0aeb11c041a6916d93e9b4884eef', role, 0
|
|
||||||
FROM performances
|
|
||||||
WHERE person IS NOT NULL;
|
|
||||||
|
|
||||||
INSERT INTO recording_ensembles (recording_id, ensemble_id, role_id, sequence_number)
|
|
||||||
SELECT recording, ensemble, '28ff0aeb11c041a6916d93e9b4884eef', 0
|
|
||||||
FROM performances
|
|
||||||
WHERE ensemble IS NOT NULL;
|
|
||||||
|
|
||||||
INSERT INTO tracks_new (track_id, recording_id, recording_index, medium_id, medium_index, path)
|
|
||||||
SELECT id, recording, "index", medium, source_index, path
|
|
||||||
FROM tracks;
|
|
||||||
|
|
||||||
INSERT INTO track_works (track_id, work_id, sequence_number)
|
|
||||||
SELECT tracks.id, work_parts.id, 0
|
|
||||||
FROM tracks
|
|
||||||
JOIN recordings ON tracks.recording = recordings.id
|
|
||||||
JOIN work_parts ON recordings.work = work_parts.work
|
|
||||||
AND tracks.work_parts = work_parts.part_index;
|
|
||||||
|
|
||||||
INSERT INTO mediums_new (medium_id, discid)
|
|
||||||
SELECT id, discid
|
|
||||||
FROM mediums;
|
|
||||||
|
|
||||||
INSERT INTO albums (album_id, name)
|
|
||||||
SELECT id, json_set('{}', '$.generic', name)
|
|
||||||
FROM mediums;
|
|
||||||
|
|
||||||
-- This works because mediums, that become albums in this migration, keep their ID.
|
|
||||||
INSERT INTO album_recordings (album_id, recording_id, sequence_number)
|
|
||||||
SELECT medium, recording, ROW_NUMBER() OVER (PARTITION BY medium ORDER BY min_source_index)
|
|
||||||
FROM (
|
|
||||||
SELECT medium, recording, MIN(source_index) AS min_source_index
|
|
||||||
FROM tracks GROUP BY medium, recording
|
|
||||||
);
|
|
||||||
|
|
||||||
-- See above
|
|
||||||
INSERT INTO album_mediums (album_id, medium_id, sequence_number)
|
|
||||||
SELECT id, id, 0
|
|
||||||
FROM mediums;
|
|
||||||
|
|
||||||
DROP TABLE persons;
|
|
||||||
DROP TABLE instruments;
|
|
||||||
DROP TABLE works;
|
|
||||||
DROP TABLE instrumentations;
|
|
||||||
DROP TABLE work_parts;
|
|
||||||
DROP TABLE ensembles;
|
|
||||||
DROP TABLE recordings;
|
|
||||||
DROP TABLE performances;
|
|
||||||
DROP TABLE mediums;
|
|
||||||
DROP TABLE tracks;
|
|
||||||
|
|
||||||
ALTER TABLE persons_new RENAME TO persons;
|
|
||||||
ALTER TABLE instruments_new RENAME TO instruments;
|
|
||||||
ALTER TABLE works_new RENAME TO works;
|
|
||||||
ALTER TABLE recordings_new RENAME TO recordings;
|
|
||||||
ALTER TABLE tracks_new RENAME TO tracks;
|
|
||||||
ALTER TABLE ensembles_new RENAME TO ensembles;
|
|
||||||
ALTER TABLE mediums_new RENAME TO mediums;
|
|
||||||
|
|
@ -161,15 +161,6 @@ diesel::table! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diesel::table! {
|
|
||||||
work_sections (id) {
|
|
||||||
id -> BigInt,
|
|
||||||
work -> Text,
|
|
||||||
title -> Text,
|
|
||||||
before_index -> BigInt,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diesel::table! {
|
diesel::table! {
|
||||||
works (work_id) {
|
works (work_id) {
|
||||||
work_id -> Text,
|
work_id -> Text,
|
||||||
|
|
@ -225,6 +216,5 @@ diesel::allow_tables_to_appear_in_same_query!(
|
||||||
tracks,
|
tracks,
|
||||||
work_instruments,
|
work_instruments,
|
||||||
work_persons,
|
work_persons,
|
||||||
work_sections,
|
|
||||||
works,
|
works,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue