Gebruikers own their Xtream line and optional Stremio addons; admin Accounts merges into Gebruikers so kids can get filtered lines without leaking the latest addon credentials. Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.5 KiB
SQL
41 lines
1.5 KiB
SQL
-- Unify IPTV ownership under ViewerUser (Option C); keep legacy addon-token lines.
|
|
|
|
ALTER TABLE "iptv_lines" ADD COLUMN IF NOT EXISTS "viewer_user_id" TEXT;
|
|
ALTER TABLE "iptv_lines" ALTER COLUMN "addon_token_id" DROP NOT NULL;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "iptv_lines_viewer_user_id_key" ON "iptv_lines"("viewer_user_id");
|
|
|
|
ALTER TABLE "addon_tokens" ADD COLUMN IF NOT EXISTS "viewer_user_id" TEXT;
|
|
CREATE INDEX IF NOT EXISTS "addon_tokens_viewer_user_id_idx" ON "addon_tokens"("viewer_user_id");
|
|
|
|
-- Gebruikers die via legacy iptvAddonTokenId wezen → eigenaar van die lijn
|
|
UPDATE "iptv_lines" AS l
|
|
SET "viewer_user_id" = v."id"
|
|
FROM "viewer_users" AS v
|
|
WHERE v."iptv_addon_token_id" IS NOT NULL
|
|
AND v."iptv_addon_token_id" = l."addon_token_id"
|
|
AND l."viewer_user_id" IS NULL;
|
|
|
|
-- Stremio-addons die die gebruikers gebruikten → koppel aan gebruiker
|
|
UPDATE "addon_tokens" AS t
|
|
SET "viewer_user_id" = v."id"
|
|
FROM "viewer_users" AS v
|
|
WHERE v."iptv_addon_token_id" IS NOT NULL
|
|
AND v."iptv_addon_token_id" = t."id"
|
|
AND t."viewer_user_id" IS NULL;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "iptv_lines"
|
|
ADD CONSTRAINT "iptv_lines_viewer_user_id_fkey"
|
|
FOREIGN KEY ("viewer_user_id") REFERENCES "viewer_users"("id")
|
|
ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "addon_tokens"
|
|
ADD CONSTRAINT "addon_tokens_viewer_user_id_fkey"
|
|
FOREIGN KEY ("viewer_user_id") REFERENCES "viewer_users"("id")
|
|
ON DELETE SET NULL ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL;
|
|
END $$;
|