-- Crear base de datos si no existe
CREATE DATABASE IF NOT EXISTS pos_torti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE pos_torti;

-- Tabla de categorías de ingredientes
CREATE TABLE IF NOT EXISTS categorias_ingredientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT,
    activo TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla de unidades de medida
CREATE TABLE IF NOT EXISTS unidades_medida (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    abreviatura VARCHAR(10) NOT NULL,
    activo TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla principal de ingredientes
CREATE TABLE IF NOT EXISTS ingredientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(150) NOT NULL,
    cantidad DECIMAL(10,2) DEFAULT 0,
    unidad VARCHAR(20) NOT NULL,
    precio DECIMAL(10,2) DEFAULT 0,
    proveedor VARCHAR(150),
    stock_minimo DECIMAL(10,2) DEFAULT 0,
    categoria VARCHAR(100) DEFAULT 'Otros',
    activo TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertar categorías por defecto
INSERT INTO categorias_ingredientes (nombre) VALUES
('Verduras'),
('Carnes'),
('Lácteos'),
('Granos'),
('Especias'),
('Otros')
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);

-- Insertar unidades por defecto
INSERT INTO unidades_medida (nombre, abreviatura) VALUES
('Kilogramo', 'kg'),
('Gramo', 'g'),
('Litro', 'L'),
('Mililitro', 'ml'),
('Pieza', 'pza'),
('Bolsa', 'bolsa'),
('Caja', 'caja')
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);

-- Insertar algunos ingredientes de ejemplo
INSERT INTO ingredientes (nombre, cantidad, unidad, precio, proveedor, stock_minimo, categoria) VALUES
('Maíz', 50, 'kg', 25.00, 'Proveedor A', 10, 'Granos'),
('Manteca', 20, 'kg', 45.00, 'Proveedor B', 5, 'Lácteos'),
('Sal', 10, 'kg', 15.00, 'Proveedor A', 2, 'Especias')
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);
