// src/models/syncControlModel.js const pool = require('../data/database'); const { logError, logInfo } = require('../utils/logger'); class SyncControlModel { static async getWatermark(systemName) { try { const query = 'SELECT last_watermark FROM sync_control WHERE system_name = $1'; const { rows } = await pool.query(query, [systemName]); if (rows.length === 0) { throw new Error(`Watermark para o sistema '${systemName}' não encontrada no banco de dados.`); } // Retorna no formato que o ServiceNow espera: 'YYYY-MM-DD HH:MM:SS' return rows[0].last_watermark.toISOString().replace('T', ' ').substring(0, 19); } catch (error) { logError(error, `Erro ao buscar watermark para ${systemName}`); throw error; } } static async setWatermark(systemName, watermark) { try { const query = ` UPDATE sync_control SET last_watermark = $1, last_run_at = NOW(), last_run_status = 'success' WHERE system_name = $2 `; await pool.query(query, [watermark, systemName]); logInfo(`🌊 Nova marca d'água para '${systemName}' definida para: ${watermark}`); } catch (error) { logError(error, `Erro ao definir watermark para ${systemName}`); throw error; } } } module.exports = SyncControlModel;