14 lines
1.0 KiB
SQL
14 lines
1.0 KiB
SQL
CREATE TABLE "track_artists" (
|
|
"track_id" uuid NOT NULL,
|
|
"artist_id" uuid NOT NULL,
|
|
"position" integer DEFAULT 0 NOT NULL,
|
|
"role" text DEFAULT 'main' NOT NULL,
|
|
CONSTRAINT "track_artists_track_id_artist_id_pk" PRIMARY KEY("track_id","artist_id")
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "track_artists" ADD CONSTRAINT "track_artists_track_id_tracks_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "track_artists" ADD CONSTRAINT "track_artists_artist_id_artists_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX "track_artists_artist_idx" ON "track_artists" USING btree ("artist_id");--> statement-breakpoint
|
|
-- Backfill: make the existing single artist of each track a main credit.
|
|
INSERT INTO "track_artists" ("track_id", "artist_id", "position", "role")
|
|
SELECT "id", "artist_id", 0, 'main' FROM "tracks" WHERE "artist_id" IS NOT NULL; |