You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/drizzle/0018_eliminar_catalogo_prov...

58 lines
2.1 KiB

-- 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
);

Powered by TurnKey Linux.