-- ============================================
-- CRIAÇÃO DA TABELA CHECKLIST_VEICULO (VERSÃO CORRIGIDA)
-- Sistema de checklist pós-viagem
-- Data: 2025-01-26
-- ============================================

-- Remover tabela se existir (para recriar)
DROP TABLE IF EXISTS checklist_veiculo;

-- Criar tabela checklist_veiculo sem foreign keys inicialmente
CREATE TABLE checklist_veiculo (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    viagem_id BIGINT NULL COMMENT 'ID da viagem relacionada (pode ser NULL para checklists independentes)',
    veiculo_id BIGINT NOT NULL COMMENT 'ID do veículo (obrigatório)',
    data_hora DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    itens_json TEXT NOT NULL COMMENT 'JSON com todos os itens do checklist e seus status',
    observacoes_gerais TEXT DEFAULT NULL,
    sincronizado BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    -- Índices para performance
    INDEX idx_viagem_id (viagem_id),
    INDEX idx_veiculo_id (veiculo_id),
    INDEX idx_data_hora (data_hora),
    INDEX idx_sincronizado (sincronizado)
    
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Armazena checklists de veículos realizados após viagens';

-- Inserir dados de teste para validar a estrutura
INSERT INTO checklist_veiculo (
    viagem_id, 
    veiculo_id, 
    itens_json, 
    observacoes_gerais
) VALUES (
    NULL,
    1,
    '[{"id":"docs_documentos","nome":"Documentos do Veículo","categoria":"Documentos e Cartões","status":"OK","observacao":""},{"id":"docs_vale_card","nome":"Cartão Vale Card","categoria":"Documentos e Cartões","status":"OK","observacao":""}]',
    'Teste de criação da tabela - checklist exemplo'
);

-- Verificar se a inserção funcionou
SELECT 'Tabela checklist_veiculo criada com sucesso!' as status;
SELECT COUNT(*) as total_registros FROM checklist_veiculo;

-- Mostrar estrutura da tabela
DESCRIBE checklist_veiculo;

-- Mostrar dados de teste inseridos
SELECT 
    id,
    viagem_id,
    veiculo_id,
    data_hora,
    LEFT(itens_json, 100) as itens_preview,
    observacoes_gerais,
    sincronizado
FROM checklist_veiculo
LIMIT 5; 