// 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, destiny_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING id; `; const values = [ updateData.ticket_sync_id, 'note', updateData.source_system, updateData.content, 'Sothis', updateData.created_at, updateData.updated_at, updateData.source_id, updateData.destiny_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); } static async getDestinyIdBySourceId(sourceId) { try { const query = ` SELECT destiny_id FROM ticket_updates WHERE source_id = $1 `; const { rows } = await pool.query(query, [sourceId]); return rows[0] ? rows[0].destiny_id : null; } catch (error) { logError(error, '❌ Erro ao buscar destiny_id por source_id'); throw error; } } static async updateDestinyId(sourceId, destinyId) { try { const query = ` UPDATE ticket_updates SET destiny_id = $1 WHERE source_id = $2 `; await pool.query(query, [destinyId, sourceId]); return { success: true, destiny_id: destinyId }; } catch (error) { logError(error, '❌ Erro ao atualizar destiny_id por source_id'); throw error; } } } module.exports = TicketUpdateModel;