CREATE DATABASE IF NOT EXISTS aladoapp_revista CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE aladoapp_revista;

CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  email VARCHAR(160) NOT NULL UNIQUE,
  senha_hash VARCHAR(255) NOT NULL,
  criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE configuracoes_catalogo (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titulo VARCHAR(160) NOT NULL DEFAULT 'Catálogo de Produtos',
  subtitulo VARCHAR(255) DEFAULT NULL,
  capa VARCHAR(255) DEFAULT NULL,
  contracapa VARCHAR(255) DEFAULT NULL,
  whatsapp VARCHAR(30) DEFAULT NULL,
  atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE categorias (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  ordem INT NOT NULL DEFAULT 0,
  ativo TINYINT(1) NOT NULL DEFAULT 1
);

CREATE TABLE subcategorias (
  id INT AUTO_INCREMENT PRIMARY KEY,
  categoria_id INT NOT NULL,
  nome VARCHAR(120) NOT NULL,
  ordem INT NOT NULL DEFAULT 0,
  ativo TINYINT(1) NOT NULL DEFAULT 1,
  FOREIGN KEY (categoria_id) REFERENCES categorias(id) ON DELETE CASCADE
);

CREATE TABLE produtos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  categoria_id INT NOT NULL,
  subcategoria_id INT NULL,
  codigo VARCHAR(60) NOT NULL,
  nome VARCHAR(160) NOT NULL,
  descricao TEXT NULL,
  foto VARCHAR(255) NULL,
  preco DECIMAL(10,2) NULL,
  link_externo VARCHAR(255) NULL,
  ordem INT NOT NULL DEFAULT 0,
  ativo TINYINT(1) NOT NULL DEFAULT 1,
  criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (categoria_id) REFERENCES categorias(id),
  FOREIGN KEY (subcategoria_id) REFERENCES subcategorias(id) ON DELETE SET NULL
);

INSERT INTO configuracoes_catalogo (titulo, subtitulo, whatsapp)
VALUES ('Catálogo de Produtos', 'Precisão que transforma. Soluções que impulsionam.', '5511999999999');

INSERT INTO usuarios (nome, email, senha_hash)
VALUES ('Administrador', 'admin@alado.com.br', '$2y$10$troque_este_hash_no_primeiro_acesso');
