-- ══════════════════════════════════════════════════════════════════
-- MIGRACIÓN: Links de streaming y visualizador en Cancion
-- Base de datos: Banda   Schema: Music
-- ══════════════════════════════════════════════════════════════════

USE Banda;
GO

-- ── 1. Nuevas columnas en Music.Cancion ───────────────────────────

ALTER TABLE Music.Cancion
    ADD SpotifyUrl          NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        AppleMusicUrl       NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        YoutubeMusicUrl     NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        YoutubeVisualizerId NVARCHAR(20)  COLLATE SQL_Latin1_General_CP1_CI_AS NULL;
GO

-- ── 2. Recrear VWCancion ──────────────────────────────────────────

CREATE OR ALTER VIEW Music.VWCancion AS
SELECT
    c.IdCancion,
    c.Titulo,
    c.IdTipoEstadoCancion,
    tec.Descripcion         AS EstadoCancion,
    c.DuracionSegundos,
    c.AudioRuta,
    c.Letra,
    c.SpotifyUrl,
    c.AppleMusicUrl,
    c.YoutubeMusicUrl,
    c.YoutubeVisualizerId,
    c.IndActivo
FROM Music.Cancion c
JOIN Music.TipoEstadoCancion tec    ON tec.IdTipoEstadoCancion = c.IdTipoEstadoCancion;
GO

-- ── 3. Recrear VWAlbumTracklist ───────────────────────────────────

CREATE OR ALTER VIEW Music.VWAlbumTracklist AS
SELECT
    a.IdAlbum,
    a.Titulo                AS Album,
    ta.Descripcion          AS TipoAlbum,
    a.FechaLanzamiento,
    a.PortadaRuta,
    ac.NumeroPista,
    c.IdCancion,
    c.Titulo                AS Cancion,
    c.DuracionSegundos,
    c.AudioRuta,
    c.SpotifyUrl,
    c.AppleMusicUrl,
    c.YoutubeMusicUrl,
    c.YoutubeVisualizerId,
    tec.Descripcion         AS EstadoCancion
FROM Music.Album a
JOIN Music.TipoAlbum ta             ON ta.IdTipoAlbum           = a.IdTipoAlbum
JOIN Music.AlbumCancion ac          ON ac.IdAlbum               = a.IdAlbum
JOIN Music.Cancion c                ON c.IdCancion              = ac.IdCancion AND c.IndActivo = 1
JOIN Music.TipoEstadoCancion tec    ON tec.IdTipoEstadoCancion  = c.IdTipoEstadoCancion
WHERE a.IndActivo = 1;
GO

-- ── 4. Recrear VWCancionesDisponibles ─────────────────────────────

CREATE OR ALTER VIEW Music.VWCancionesDisponibles AS
SELECT
    c.IdCancion,
    c.Titulo,
    c.DuracionSegundos,
    c.AudioRuta,
    c.SpotifyUrl,
    c.AppleMusicUrl,
    c.YoutubeMusicUrl,
    c.YoutubeVisualizerId,
    a.IdAlbum,
    a.Titulo                AS Album,
    a.PortadaRuta,
    ac.NumeroPista
FROM Music.Cancion c
JOIN Music.TipoEstadoCancion tec    ON tec.IdTipoEstadoCancion  = c.IdTipoEstadoCancion
JOIN Music.AlbumCancion ac          ON ac.IdCancion             = c.IdCancion
JOIN Music.Album a                  ON a.IdAlbum                = ac.IdAlbum AND a.IndActivo = 1
WHERE c.IndActivo        = 1
  AND tec.Descripcion    = N'Disponible'
  AND c.AudioRuta        IS NOT NULL;
GO
