Something went wrong. Try again.
A decentralized music tracking and discovery platform built on AT Protocol ๐ต rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122-- The relational half of a Discogs release: its tracklist, every credited-- artist, every label and company, every printed identifier, and the master-- that groups its editions. discogs_releases keeps the single "primary" label,-- catalog number and barcode for convenience; these tables hold the full set,-- which is what a release with four labels and six identifiers actually has.---- Child rows are rewritten wholesale per release, so `position` / `idx` is-- just the order Discogs listed them in.---- Same search_path reasoning as 0040.
SET search_path TO public, xata;--> statement-breakpointCREATE TABLE IF NOT EXISTS "discogs_masters" ( "xata_id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, "discogs_id" integer NOT NULL, "title" text NOT NULL, "artist" text, "year" integer, "main_release_id" integer, "discogs_url" text, "genres" text[], "styles" text[], "xata_createdat" timestamp DEFAULT now() NOT NULL, "xata_updatedat" timestamp DEFAULT now() NOT NULL, "xata_version" integer, CONSTRAINT "discogs_masters_discogs_id_unique" UNIQUE("discogs_id"));--> statement-breakpointCREATE TABLE IF NOT EXISTS "discogs_release_artists" ( "xata_id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, "release_id" text NOT NULL, "artist_id" integer, "name" text NOT NULL, "anv" text, "join_phrase" text, "role" text, "position" integer NOT NULL, "xata_createdat" timestamp DEFAULT now() NOT NULL, "xata_updatedat" timestamp DEFAULT now() NOT NULL, "xata_version" integer, CONSTRAINT "discogs_release_artists_release_id_position_unique" UNIQUE("release_id","position"));--> statement-breakpointDO $$ BEGIN ALTER TABLE "discogs_release_artists" ADD CONSTRAINT "discogs_release_artists_release_id_discogs_releases_xata_id_fk" FOREIGN KEY ("release_id") REFERENCES "public"."discogs_releases"("xata_id") ON DELETE no action ON UPDATE no action;EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_release_artists_release_id_idx" ON "discogs_release_artists" USING btree ("release_id");--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_release_artists_artist_id_idx" ON "discogs_release_artists" USING btree ("artist_id");--> statement-breakpointCREATE TABLE IF NOT EXISTS "discogs_release_labels" ( "xata_id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, "release_id" text NOT NULL, "label_id" integer, "name" text NOT NULL, "catalog_number" text, "kind" text NOT NULL, "entity_type" text, "position" integer NOT NULL, "xata_createdat" timestamp DEFAULT now() NOT NULL, "xata_updatedat" timestamp DEFAULT now() NOT NULL, "xata_version" integer, CONSTRAINT "discogs_release_labels_release_id_kind_position_unique" UNIQUE("release_id","kind","position"));--> statement-breakpointDO $$ BEGIN ALTER TABLE "discogs_release_labels" ADD CONSTRAINT "discogs_release_labels_release_id_discogs_releases_xata_id_fk" FOREIGN KEY ("release_id") REFERENCES "public"."discogs_releases"("xata_id") ON DELETE no action ON UPDATE no action;EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_release_labels_release_id_idx" ON "discogs_release_labels" USING btree ("release_id");--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_release_labels_label_id_idx" ON "discogs_release_labels" USING btree ("label_id");--> statement-breakpointCREATE TABLE IF NOT EXISTS "discogs_identifiers" ( "xata_id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, "release_id" text NOT NULL, "type" text NOT NULL, "value" text, "description" text, "position" integer NOT NULL, "xata_createdat" timestamp DEFAULT now() NOT NULL, "xata_updatedat" timestamp DEFAULT now() NOT NULL, "xata_version" integer, CONSTRAINT "discogs_identifiers_release_id_position_unique" UNIQUE("release_id","position"));--> statement-breakpointDO $$ BEGIN ALTER TABLE "discogs_identifiers" ADD CONSTRAINT "discogs_identifiers_release_id_discogs_releases_xata_id_fk" FOREIGN KEY ("release_id") REFERENCES "public"."discogs_releases"("xata_id") ON DELETE no action ON UPDATE no action;EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_identifiers_release_id_idx" ON "discogs_identifiers" USING btree ("release_id");--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_identifiers_type_value_idx" ON "discogs_identifiers" USING btree ("type","value");--> statement-breakpointCREATE TABLE IF NOT EXISTS "discogs_tracks" ( "xata_id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, "release_id" text NOT NULL, "position" text, "type" text, "title" text NOT NULL, "duration" text, "duration_ms" integer, "disc_number" integer, "track_number" integer, "idx" integer NOT NULL, "xata_createdat" timestamp DEFAULT now() NOT NULL, "xata_updatedat" timestamp DEFAULT now() NOT NULL, "xata_version" integer, CONSTRAINT "discogs_tracks_release_id_idx_unique" UNIQUE("release_id","idx"));--> statement-breakpointDO $$ BEGIN ALTER TABLE "discogs_tracks" ADD CONSTRAINT "discogs_tracks_release_id_discogs_releases_xata_id_fk" FOREIGN KEY ("release_id") REFERENCES "public"."discogs_releases"("xata_id") ON DELETE no action ON UPDATE no action;EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpointCREATE INDEX IF NOT EXISTS "discogs_tracks_release_id_idx" ON "discogs_tracks" USING btree ("release_id");--> statement-breakpoint-- Lets a release be joined to its master without a second column.CREATE INDEX IF NOT EXISTS "discogs_releases_master_id_lookup_idx" ON "discogs_releases" USING btree ("master_id");