hubxglpi/model/glpiModel.js

107 lines
3.1 KiB
JavaScript
Raw Normal View History

// src/models/glpiModel.js
const dbConfig = require('../config/dbConfig.js');
const { logError, logInfo} = require('../utils/logger');
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: dbConfig.glpi.databaseHost,
port: dbConfig.glpi.databasePort,
database: dbConfig.glpi.databaseName,
user: dbConfig.glpi.databaseUser,
password: dbConfig.glpi.databasePassword,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
class GlpiModel {
static async insertTicket(ticketData) {
const query = `
INSERT INTO glpi_tickets(
entities_id,
name,
date,
date_mod,
status,
users_id_recipient,
content,
urgency,
impact,
priority,
type,
itilcategories_id,
date_creation,
slas_id_ttr
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`;
const values = [
ticketData.entidades_id,
ticketData.titulo,
ticketData.created_at,
ticketData.date_mod,
ticketData.status_atendimento,
ticketData.user_id_recipient,
ticketData.descricao_abertura,
ticketData.urgency,
ticketData.impact,
ticketData.priority,
2,
ticketData.itilcategories_id,
ticketData.date_creation,
37
];
console.log(query, values);
try {
const [rows] = await pool.execute(query, values);
logInfo('Ticket inserido com sucesso:', rows);
return rows;
} catch (error) {
logError('Erro ao inserir ticket:', error);
throw error;
}
}
static async selectEntityId(id) {
const query = `SELECT id FROM glpi_entities WHERE name LIKE ? OR name LIKE ? LIMIT 1;`;
const values = [`%${id} -%`, `%${id}-%`];
try {
const [rows] = await pool.execute(query, values);
if (!rows || rows.length === 0) {
logInfo('Entidade não encontrada para:', id);
return null;
}
logInfo('Entidade encontrada:', rows[0]);
return Number(rows[0].id);
} catch (err) {
logError('Erro ao buscar entidade', err);
throw err;
}
}
static async insertGroupTickets(glpiTicketId) {
const query = `
INSERT INTO glpi_groups_tickets (tickets_id, groups_id, type)
VALUES (?, ?, ?)
`;
const values = [glpiTicketId, 25, 2];
try {
const res = await pool.query(query, values);
logInfo('ID de sync_data obtido com sucesso:', res.rows[0]);
return res.rows[0] ? res.rows[0].id : null;
}
catch (err) {
logError('Erro ao obter ID de sync_data', err);
throw err;
}
}
}
module.exports = GlpiModel;