-- Integração Facebook

CREATE TABLE IF NOT EXISTS facebook_config (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- OAuth
    app_id VARCHAR(255) NULL,
    app_secret VARCHAR(255) NULL,
    access_token TEXT NULL,
    long_lived_token TEXT NULL,
    token_expires_at DATETIME NULL,
    
    -- Configurações
    page_id VARCHAR(255) NULL,
    ad_account_id VARCHAR(255) NULL,
    catalog_id VARCHAR(255) NULL,
    
    -- Sincronização
    sincronizar_produtos BOOLEAN DEFAULT FALSE,
    auto_publicar BOOLEAN DEFAULT FALSE,
    criar_anuncios BOOLEAN DEFAULT FALSE,
    intervalo_sincronizacao_minutos INT DEFAULT 60,
    
    -- Webhook
    webhook_url VARCHAR(500) NULL,
    webhook_token VARCHAR(255) NULL,
    
    -- Status
    ativo BOOLEAN DEFAULT FALSE,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_tenant (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Mapeamento de produtos
CREATE TABLE IF NOT EXISTS facebook_produtos (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Produto ERP
    product_id BIGINT UNSIGNED NOT NULL,
    
    -- Produto Facebook
    facebook_product_id VARCHAR(50) NULL,
    catalog_id VARCHAR(50) NULL,
    
    -- Status
    status ENUM('draft', 'active', 'paused', 'deleted') DEFAULT 'draft',
    sincronizado BOOLEAN DEFAULT FALSE,
    ultima_sincronizacao DATETIME NULL,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_product (product_id),
    INDEX idx_facebook_product (facebook_product_id),
    INDEX idx_status (status),
    UNIQUE KEY uk_tenant_product (tenant_id, product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Publicações do Facebook
CREATE TABLE IF NOT EXISTS facebook_publicacoes (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Publicação Facebook
    facebook_post_id VARCHAR(50) NULL,
    
    -- Produto relacionado
    product_id BIGINT UNSIGNED NULL,
    
    -- Dados da publicação
    tipo ENUM('post', 'video', 'photo', 'link') DEFAULT 'post',
    mensagem TEXT NULL,
    url_imagem VARCHAR(500) NULL,
    url_link VARCHAR(500) NULL,
    
    -- Status
    status ENUM('draft', 'scheduled', 'published', 'failed') DEFAULT 'draft',
    data_publicacao DATETIME NULL,
    
    -- Estatísticas
    alcance INT DEFAULT 0,
    engajamento INT DEFAULT 0,
    cliques INT DEFAULT 0,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_product (product_id),
    INDEX idx_facebook_post (facebook_post_id),
    INDEX idx_status (status),
    INDEX idx_data_publicacao (data_publicacao)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Anúncios do Facebook
CREATE TABLE IF NOT EXISTS facebook_anuncios (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Anúncio Facebook
    ad_id VARCHAR(50) NULL,
    ad_set_id VARCHAR(50) NULL,
    campaign_id VARCHAR(50) NULL,
    
    -- Produto relacionado
    product_id BIGINT UNSIGNED NULL,
    
    -- Dados do anúncio
    nome VARCHAR(255) NULL,
    tipo ENUM('image', 'video', 'carousel', 'collection') DEFAULT 'image',
    texto_anuncio TEXT NULL,
    url_imagem VARCHAR(500) NULL,
    
    -- Status
    status ENUM('draft', 'active', 'paused', 'archived') DEFAULT 'draft',
    data_inicio DATETIME NULL,
    data_fim DATETIME NULL,
    
    -- Orçamento
    orcamento_diario DECIMAL(10,2) NULL,
    orcamento_total DECIMAL(10,2) NULL,
    
    -- Estatísticas
    alcance INT DEFAULT 0,
    impressoes INT DEFAULT 0,
    cliques INT DEFAULT 0,
    conversoes INT DEFAULT 0,
    custo_total DECIMAL(10,2) DEFAULT 0,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_product (product_id),
    INDEX idx_ad_id (ad_id),
    INDEX idx_status (status),
    INDEX idx_data_inicio (data_inicio)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Logs de sincronização
CREATE TABLE IF NOT EXISTS facebook_logs (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Tipo de operação
    tipo ENUM('produto', 'publicacao', 'anuncio', 'webhook', 'erro') NOT NULL,
    
    -- Status
    status ENUM('sucesso', 'erro', 'aviso') NOT NULL,
    
    -- Dados
    mensagem TEXT NULL,
    detalhes_json TEXT NULL,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_tipo (tipo),
    INDEX idx_status (status),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

