-- Sistema Bibliotecario - I.E. María de los Ángeles Cano
-- Esquema de base de datos MySQL (compatible con InfinityFree / MySQL 5.7+)

CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    documento VARCHAR(50) NOT NULL,
    rol ENUM('admin','estudiante') NOT NULL DEFAULT 'estudiante',
    password_hash VARCHAR(255) NOT NULL,
    creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uq_documento (documento)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS libros (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(200) NOT NULL,
    copias_totales INT NOT NULL DEFAULT 1,
    copias_disponibles INT NOT NULL DEFAULT 1,
    creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS prestamos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    libro_id INT NOT NULL,
    fecha_prestamo DATE NOT NULL,
    fecha_limite DATE NOT NULL,
    fecha_devolucion DATE NULL,
    estado ENUM('activo','devuelto') NOT NULL DEFAULT 'activo',
    CONSTRAINT fk_prestamo_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE RESTRICT,
    CONSTRAINT fk_prestamo_libro FOREIGN KEY (libro_id) REFERENCES libros(id) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE INDEX idx_prestamos_usuario ON prestamos(usuario_id);
CREATE INDEX idx_prestamos_libro ON prestamos(libro_id);
CREATE INDEX idx_prestamos_estado ON prestamos(estado);

-- Usuario administrador por defecto.
-- Usuario: admin | Documento: 0 | Contraseña: 1234
-- IMPORTANTE: cambiar esta contraseña desde el panel apenas se despliegue el sistema.
-- Hash generado con password_hash('1234', PASSWORD_DEFAULT) en PHP 8.
INSERT INTO usuarios (nombre, documento, rol, password_hash)
VALUES ('admin', '0', 'admin', '$2y$12$dE66PQpYzlZNqHO7r.QqW.R5HGJG1N7E26LzmbEi5y6/ORg88uI9G');
