-- Crear la tabla de provincias si no existe
CREATE TABLE IF NOT EXISTS `provincias` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `nombre` VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Poblar la tabla de provincias con algunas opciones iniciales
INSERT INTO `provincias` (`nombre`) VALUES
('Lima'),
('Arequipa'),
('Trujillo'),
('Cusco'),
('Piura')
ON DUPLICATE KEY UPDATE nombre=nombre; -- No hacer nada si ya existen

-- Modificar la tabla de productos para alinearla con el código existente
-- 1. Añadir la columna provincia_id si no existe
ALTER TABLE `products` ADD COLUMN IF NOT EXISTS `provincia_id` INT NULL AFTER `price`;

-- 2. Renombrar la columna 'name' a 'nombre' si existe
-- (Se hace de forma segura comprobando primero la existencia de las columnas)
SET @db = DATABASE();
SET @table = 'products';
SET @old_col = 'name';
SET @new_col = 'nombre';

SELECT COUNT(*) INTO @col_exists FROM information_schema.columns
WHERE table_schema = @db AND table_name = @table AND column_name = @old_col;

SELECT COUNT(*) INTO @new_col_exists FROM information_schema.columns
WHERE table_schema = @db AND table_name = @table AND column_name = @new_col;

SET @sql = IF(@col_exists > 0 AND @new_col_exists = 0,
    CONCAT('ALTER TABLE ', @table, ' CHANGE COLUMN ', @old_col, ' ', @new_col, ' VARCHAR(255) NOT NULL;'),
    'SELECT \'Columna no renombrada: o `name` no existe o `nombre` ya existe.\' AS status;');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- 3. Añadir la clave foránea para vincular productos con provincias
ALTER TABLE `products` ADD CONSTRAINT `fk_provincia` FOREIGN KEY IF NOT EXISTS (`provincia_id`) REFERENCES `provincias`(`id`) ON DELETE SET NULL;
