-- Criação do banco de dados
CREATE DATABASE IF NOT EXISTS desenvolvi_equipamentos_portal DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE desenvolvi_equipamentos_portal;

-- Tabela de usuários (para login/autenticação)
CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(100) NOT NULL,
  email VARCHAR(100) NOT NULL UNIQUE,
  senha VARCHAR(255) NOT NULL,
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de equipamentos
CREATE TABLE equipamentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  patrimonio VARCHAR(50) NOT NULL UNIQUE,
  nome VARCHAR(100) NOT NULL,
  modelo VARCHAR(100),
  categoria VARCHAR(50),
  status ENUM('disponivel', 'alugado', 'manutencao') DEFAULT 'disponivel',
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de clientes
CREATE TABLE clientes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(100) NOT NULL,
  cpf_cnpj VARCHAR(20),
  telefone VARCHAR(20),
  email VARCHAR(100),
  endereco TEXT,
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de aluguéis
CREATE TABLE alugueis (
  id INT AUTO_INCREMENT PRIMARY KEY,
  equipamento_id INT NOT NULL,
  cliente_id INT NOT NULL,
  data_retirada DATE NOT NULL,
  data_prevista_devolucao DATE,
  data_real_devolucao DATE,
  observacoes TEXT,
  FOREIGN KEY (equipamento_id) REFERENCES equipamentos(id) ON DELETE CASCADE,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE
);

-- Tabela de manutenções
CREATE TABLE manutencoes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  equipamento_id INT NOT NULL,
  data_envio DATE NOT NULL,
  tipo VARCHAR(50),
  descricao TEXT,
  data_prevista_retorno DATE,
  data_retorno DATE,
  custo DECIMAL(10,2),
  FOREIGN KEY (equipamento_id) REFERENCES equipamentos(id) ON DELETE CASCADE
);
