-- Retira el catálogo de demostración que precedía a las grabaciones reales. -- Los slugs son deliberadamente explícitos: la duración o el formato del audio -- sirven para auditar, pero nunca deben convertirse en un criterio de borrado. DO $$ BEGIN IF EXISTS ( WITH principales AS ( SELECT id FROM cancion WHERE version_de_id IS NULL AND slug IN ( 'carta-sin-enviar', 'cinco-de-la-manana', 'como-si-nada', 'domingo-largo', 'dos-orillas', 'el-invierno-que-viene', 'el-ultimo-tren', 'la-ultima-carta', 'media-verdad', 'nadie-mira', 'preludio-i', 'preludio-ii', 'preludio-iii', 'ruido-blanco', 'the-long-way-home', 'tres-de-la-tarde', 'verano-tarde' ) ), objetivos AS ( SELECT id FROM principales UNION ALL SELECT c.id FROM cancion c INNER JOIN principales p ON p.id = c.version_de_id ) SELECT 1 FROM objetivos o WHERE EXISTS (SELECT 1 FROM compra x WHERE x.cancion_id = o.id) OR EXISTS (SELECT 1 FROM pedido_item x WHERE x.cancion_id = o.id) ) THEN RAISE EXCEPTION 'No se puede borrar el catálogo provisional: tiene compras o pedidos'; END IF; END $$; --> statement-breakpoint DELETE FROM cancion WHERE version_de_id IS NULL AND slug IN ( 'carta-sin-enviar', 'cinco-de-la-manana', 'como-si-nada', 'domingo-largo', 'dos-orillas', 'el-invierno-que-viene', 'el-ultimo-tren', 'la-ultima-carta', 'media-verdad', 'nadie-mira', 'preludio-i', 'preludio-ii', 'preludio-iii', 'ruido-blanco', 'the-long-way-home', 'tres-de-la-tarde', 'verano-tarde' ); --> statement-breakpoint -- Los contenedores vacíos se retiran del catálogo público, pero no se -- destruyen: pueden restaurarse si se recupera alguna de sus canciones. UPDATE album SET estado = 'retirado', actualizado_en = now() WHERE slug IN ('como-si-nada', 'dos-orillas', 'preludios-para-piano', 'ruido-blanco') AND NOT EXISTS (SELECT 1 FROM cancion c WHERE c.album_id = album.id); --> statement-breakpoint UPDATE artista SET estado = 'retirado', actualizado_en = now() WHERE slug IN ('andres-bermejo', 'coral-vidal', 'los-del-puerto', 'marta-cifuentes', 'nuria-lastra') AND NOT EXISTS ( SELECT 1 FROM cancion_interprete ci WHERE ci.artista_id = artista.id );