// src/models/ticketUpdateModel.js const pool = require('../data/database'); const { logError } = require('../utils/logger'); class TicketUpdateModel { static async insert(updateData) { const query = ` INSERT INTO ticket_updates (ticket_sync_id, update_type, source_system, content, author, created_at, updated_at, source_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING id; `; const values = [ updateData.ticket_sync_id, 'note', updateData.source_system, updateData.content, 'Sothis', updateData.created_at, updateData.updated_at, updateData.source_id ]; try { const { rows } = await pool.query(query, values); return { success: true, newId: rows[0].id }; } catch (error) { logError(error, '❌ Erro ao inserir ticket_update'); return { success: false, error: error.message }; } } static async getByTicketSyncIdAndSourceId(ticketSyncId, sourceId) { try { const query = ` SELECT * FROM ticket_updates WHERE ticket_sync_id = $1 AND source_id = $2 `; const { rows } = await pool.query(query, [ticketSyncId, sourceId]); return rows[0] || null; } catch (error) { logError(error, `❌ Erro ao buscar update por ticket_sync_id e source_id`); throw error; } } static async getCommentSync(glpiTicketId, sourceId) { const ticketSyncModel = require('./ticketSyncModel'); const ticketSyncId = await ticketSyncModel.getIdSyncByGlpiId(glpiTicketId); if (!ticketSyncId) { return null; } return await this.getByTicketSyncIdAndSourceId(ticketSyncId, sourceId); } } module.exports = TicketUpdateModel;