-- ============================================================
-- MIGRAÇÃO: Sistema de Afiliados
-- Data: 2025-04
-- Sistema: Checkout Pro 2025
-- ============================================================

-- Tabela de afiliações (relacionamento entre produtos e afiliados)
CREATE TABLE IF NOT EXISTS `afiliacoes` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `produto_id` INT(11) NOT NULL,
    `usuario_id` INT(11) NOT NULL COMMENT 'ID do usuário afiliado',
    `comissao_tipo` VARCHAR(20) NOT NULL DEFAULT 'percentual' COMMENT 'Tipo: percentual ou fixo',
    `comissao_valor` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT 'Valor da comissão (percentual ou fixo)',
    `status` VARCHAR(20) NOT NULL DEFAULT 'ativo' COMMENT 'Status: ativo, inativo, pendente',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_afiliacao` (`produto_id`, `usuario_id`),
    KEY `idx_produto_id` (`produto_id`),
    KEY `idx_usuario_id` (`usuario_id`),
    KEY `idx_status` (`status`),
    CONSTRAINT `fk_afiliacoes_produto` FOREIGN KEY (`produto_id`) REFERENCES `produtos` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_afiliacoes_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- TABELAS OPCIONAIS PARA FUTURO
-- ============================================================
-- 
-- Tabela de convites de afiliados (opcional - para uso futuro)
-- Permite que produtores convidem afiliados específicos
--
-- CREATE TABLE IF NOT EXISTS `afiliados_convites` (
--     `id` INT(11) NOT NULL AUTO_INCREMENT,
--     `produto_id` INT(11) NOT NULL,
--     `email_afiliado` VARCHAR(191) NOT NULL,
--     `comissao_tipo` VARCHAR(20) NOT NULL DEFAULT 'percentual',
--     `comissao_valor` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
--     `status` VARCHAR(20) NOT NULL DEFAULT 'pendente' COMMENT 'pendente, aceito, recusado',
--     `token` VARCHAR(255) NOT NULL COMMENT 'Token único para aceitar convite',
--     `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
--     `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
--     PRIMARY KEY (`id`),
--     KEY `idx_produto_id` (`produto_id`),
--     KEY `idx_token` (`token`),
--     CONSTRAINT `fk_convites_produto` FOREIGN KEY (`produto_id`) REFERENCES `produtos` (`id`) ON DELETE CASCADE
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- ============================================================

-- ============================================================
-- VERIFICAÇÃO
-- ============================================================
-- 
-- Após executar a migração, verifique se tudo está correto:
--
-- SELECT COUNT(*) as total_afiliacoes FROM afiliacoes;
-- SELECT produto_id, usuario_id, comissao_tipo, comissao_valor, status FROM afiliacoes;
--
-- ============================================================


