-- Base de datos para la lista de pendientes de Saquida
-- Requisitos: MySQL 8+ (motor InnoDB, codificación utf8mb4)

-- Crea la base de datos (ajusta el nombre si ya usas otro)
CREATE DATABASE IF NOT EXISTS saquida_worklist
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

USE saquida_worklist;

-- Tabla de usuarios: separa los pendientes por usuario
CREATE TABLE IF NOT EXISTS users (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(100) NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Tabla de pendientes: soporta fecha límite opcional y marcado de completado
CREATE TABLE IF NOT EXISTS tasks (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  user_id INT UNSIGNED NOT NULL,
  title VARCHAR(150) NOT NULL,
  description TEXT NULL,
  due_at DATETIME NULL,                 -- Fecha límite opcional
  is_done TINYINT(1) NOT NULL DEFAULT 0, -- Check de completado
  completed_at DATETIME NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_tasks_user FOREIGN KEY (user_id)
    REFERENCES users(id)
    ON DELETE CASCADE,
  INDEX idx_tasks_user_due (user_id, due_at),
  INDEX idx_tasks_done (is_done)
) ENGINE=InnoDB;
