fix: use constrained foreign key for files track_type

This commit is contained in:
jo 2022-06-08 16:31:01 +02:00 committed by Kyle Robbertze
parent bcaea16c19
commit db976881f0
26 changed files with 1233 additions and 113 deletions

View file

@ -0,0 +1,55 @@
# pylint: disable=invalid-name
from django.db import migrations
from ._migrations import legacy_migration_factory
UP = """
ALTER TABLE "cc_files" ADD COLUMN "track_type_id" INTEGER;
ALTER TABLE "cc_files" ADD CONSTRAINT "cc_files_track_type_fkey"
FOREIGN KEY ("track_type_id")
REFERENCES "cc_track_types" ("id");
UPDATE "cc_files" previous SET "track_type_id" = (
SELECT "id" FROM "cc_track_types"
WHERE "code" = previous."track_type"
)
WHERE "track_type" IS NOT NULL;
UPDATE "cc_pref" previous SET "valstr" = (
SELECT "id" FROM "cc_track_types"
WHERE "code" = previous."valstr"
)
WHERE "keystr" = 'tracktype_default'
AND "valstr" <> '';
ALTER TABLE "cc_files" DROP COLUMN IF EXISTS "track_type";
"""
DOWN = """
ALTER TABLE "cc_files" DROP CONSTRAINT "cc_files_track_type_fkey";
ALTER TABLE "cc_files" DROP COLUMN IF EXISTS "track_type_id";
ALTER TABLE "cc_files" ADD COLUMN "track_type" VARCHAR(16);
UPDATE "cc_pref" previous SET "valstr" = (
SELECT "code" FROM "cc_track_types"
WHERE "id" = previous."valstr"::int
)
WHERE "keystr" = 'tracktype_default'
AND "valstr" <> '';
"""
class Migration(migrations.Migration):
dependencies = [
("legacy", "0034_3_0_0_alpha_13_8"),
]
operations = [
migrations.RunPython(
code=legacy_migration_factory(
target="3.0.0-alpha.13.9",
sql=UP,
)
)
]

View file

@ -1 +1 @@
LEGACY_SCHEMA_VERSION = "3.0.0-alpha.13.8"
LEGACY_SCHEMA_VERSION = "3.0.0-alpha.13.9"

View file

@ -74,7 +74,7 @@ CREATE TABLE "cc_files"
"filesize" INTEGER DEFAULT 0 NOT NULL,
"description" VARCHAR(512),
"artwork" VARCHAR(4096),
"track_type" VARCHAR(16),
"track_type_id" INTEGER,
PRIMARY KEY ("id")
);
@ -720,6 +720,10 @@ ALTER TABLE "cc_files" ADD CONSTRAINT "cc_files_editedby_fkey"
FOREIGN KEY ("editedby")
REFERENCES "cc_subjs" ("id");
ALTER TABLE "cc_files" ADD CONSTRAINT "cc_files_track_type_fkey"
FOREIGN KEY ("track_type_id")
REFERENCES "cc_track_types" ("id");
ALTER TABLE "cc_show" ADD CONSTRAINT "cc_playlist_autoplaylist_fkey"
FOREIGN KEY ("autoplaylist_id")
REFERENCES "cc_playlist" ("id")