66 lines
2.1 KiB
SQL
66 lines
2.1 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
CREATE TABLE IF NOT EXISTS media_item_provider_ids (
|
|
content_id TEXT NOT NULL REFERENCES media_items(content_id) ON DELETE CASCADE,
|
|
provider TEXT NOT NULL,
|
|
provider_id TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (content_id, provider),
|
|
UNIQUE (provider, provider_id)
|
|
);
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM (
|
|
SELECT provider, provider_id
|
|
FROM (
|
|
SELECT 'tmdb' AS provider, tmdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE tmdb_id <> ''
|
|
UNION ALL
|
|
SELECT 'tvdb' AS provider, tvdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE tvdb_id <> ''
|
|
UNION ALL
|
|
SELECT 'imdb' AS provider, imdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE imdb_id <> ''
|
|
) seeded_ids
|
|
GROUP BY provider, provider_id
|
|
HAVING COUNT(*) > 1
|
|
) duplicate_ids
|
|
) THEN
|
|
RAISE EXCEPTION 'duplicate provider ids exist in media_items; resolve duplicates before applying migration 079';
|
|
END IF;
|
|
END $$;
|
|
|
|
INSERT INTO media_item_provider_ids (content_id, provider, provider_id)
|
|
SELECT content_id, provider, provider_id
|
|
FROM (
|
|
SELECT content_id, 'tmdb' AS provider, tmdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE tmdb_id <> ''
|
|
UNION ALL
|
|
SELECT content_id, 'tvdb' AS provider, tvdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE tvdb_id <> ''
|
|
UNION ALL
|
|
SELECT content_id, 'imdb' AS provider, imdb_id AS provider_id
|
|
FROM media_items
|
|
WHERE imdb_id <> ''
|
|
) seeded
|
|
ORDER BY content_id ASC, provider ASC;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_media_item_provider_ids_provider_id
|
|
ON media_item_provider_ids (provider, provider_id);
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP INDEX IF EXISTS idx_media_item_provider_ids_provider_id;
|
|
DROP TABLE IF EXISTS media_item_provider_ids;
|
|
-- +goose StatementEnd
|