snglpi/src/models/ticketUpdateModel.js

59 lines
1.9 KiB
JavaScript
Raw Normal View History

// 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',
'glpi',
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;