// 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;