-- Tabela para armazenar configurações de marketplaces por empresa
CREATE TABLE IF NOT EXISTS config_marketplace (
    id INT AUTO_INCREMENT PRIMARY KEY,
    codemp INT NOT NULL,
    marketplace VARCHAR(50) NOT NULL COMMENT 'shopee, mercadolivre, amazon',
    client_id VARCHAR(255),
    client_secret VARCHAR(255),
    access_token TEXT,
    refresh_token TEXT,
    config_json JSON,
    ativo CHAR(1) DEFAULT 'S',
    data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY unique_empresa_marketplace (codemp, marketplace),
    INDEX idx_codemp (codemp)
);

-- Tabela para vincular produtos internos aos marketplaces
CREATE TABLE IF NOT EXISTS produto_marketplace (
    id INT AUTO_INCREMENT PRIMARY KEY,
    codemp INT NOT NULL,
    codproduto INT NOT NULL,
    marketplace VARCHAR(50) NOT NULL COMMENT 'shopee, mercadolivre, amazon',
    id_marketplace VARCHAR(255) NOT NULL COMMENT 'ID externo no marketplace',
    sku_marketplace VARCHAR(255),
    status VARCHAR(20) DEFAULT 'rascunho' COMMENT 'rascunho, publicado, erro, suspenso',
    preco_marketplace DECIMAL(10, 2),
    estoque_marketplace INT,
    url_marketplace TEXT,
    mensagem_erro TEXT,
    data_publicacao DATETIME,
    ultima_sincronizacao DATETIME,
    data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY unique_produto_marketplace (codemp, codproduto, marketplace),
    INDEX idx_codemp (codemp),
    INDEX idx_codproduto (codproduto),
    INDEX idx_status (status),
    INDEX idx_marketplace (marketplace)
);

-- Tabela para log de sincronizações
CREATE TABLE IF NOT EXISTS log_sincronizacao_marketplace (
    id INT AUTO_INCREMENT PRIMARY KEY,
    codemp INT NOT NULL,
    codproduto INT NOT NULL,
    marketplace VARCHAR(50),
    tipo_operacao VARCHAR(50) COMMENT 'publicacao, atualizacao, remocao, sincronizacao',
    status VARCHAR(20) COMMENT 'sucesso, erro, pendente',
    mensagem TEXT,
    resposta_api JSON,
    data_operacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_codemp (codemp),
    INDEX idx_codproduto (codproduto),
    INDEX idx_data (data_operacao),
    INDEX idx_status (status)
);

-- Tabela para armazenar atributos específicos de cada marketplace
CREATE TABLE IF NOT EXISTS produto_marketplace_atributos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    codemp INT NOT NULL,
    codproduto INT NOT NULL,
    marketplace VARCHAR(50),
    categoria_marketplace VARCHAR(255),
    tags_marketplace JSON,
    descricao_marketplace TEXT,
    peso_marketplace DECIMAL(8, 3),
    dimensoes_marketplace JSON,
    frete_marketplace JSON,
    imagens_marketplace JSON,
    atributos_customizados JSON,
    data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY unique_atributos (codemp, codproduto, marketplace),
    INDEX idx_codemp (codemp),
    INDEX idx_codproduto (codproduto)
);

-- Tabela para configurações gerais de marketplace por empresa
CREATE TABLE IF NOT EXISTS marketplace_configuracoes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    codemp INT NOT NULL,
    sincronizar_automatico CHAR(1) DEFAULT 'N',
    atualizar_estoque CHAR(1) DEFAULT 'N',
    atualizar_preco CHAR(1) DEFAULT 'N',
    intervalo_sincronizacao INT DEFAULT 60 COMMENT 'Intervalo em minutos',
    data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY unique_codemp (codemp),
    INDEX idx_codemp (codemp)
);
