hubxglpi/model/glpiModel.js
Rafael Lopes 172d17c4e5 WIP: Erro EconnReset resolvido
- Novo erro para realizar o insert persiste
2025-10-09 09:39:07 -03:00

104 lines
3.0 KiB
JavaScript

// 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 testConnection() {
try {
const connection = await pool.getConnection();
logInfo('Conexão com o banco de dados do GLPI estabelecida com sucesso!');
// Executa um select simples na tabela glpi_tickets
const [rows, fields] = await connection.execute('SELECT 1 FROM glpi_tickets LIMIT 1');
logInfo('Query SELECT 1 FROM glpi_tickets executada com sucesso!');
connection.release();
return true;
} catch (error) {
logError('Erro ao testar a conexão com o banco de dados do GLPI:', error);
return false;
}
}
static async insertTicket(ticketData) {
const query = `
INSERT INTO glpi_tickets(
entities_id,
name,
date,
date_mod,
status,
user_id_recipient,
content,
urgency,
impact,
priority,
type,
itilcategories_id,
date_creation,
slas_id_ttr
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`;
const values = [
ticketData.entidades_id,
ticketData.cliente_nome,
ticketData.data_cadastro,
ticketData.date_mod,
ticketData.status_atendimento,
ticketData.user_id_recipient,
ticketData.descricao_abertura,
ticketData.urgency,
ticketData.impact,
ticketData.priority,
ticketData.type,
ticketData.itilcategories_id,
ticketData.date_creation,
ticketData.slas_id_ttr
];
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(entity_name) {
const query = `SELECT id FROM glpi_entities WHERE name = ?;`;
const values = [entity_name];
try {
const [rows] = await pool.execute(query, values);
logInfo('Entidade encontrada:', rows[0]);
return rows[0];
} catch (err) {
logError('Erro ao buscar entidade', err);
throw err;
}
}
}
module.exports = GlpiModel;