REFACTOR: Ajustes na tabela tickets_sntickets_sn
- Removido coluna ticket-sn da tabela - Ajustado model para coletar id da localidade do Service Now
This commit is contained in:
parent
b746ce5ea1
commit
3fb85ca9f1
@ -6,32 +6,37 @@ class TicketSnModel {
|
|||||||
static async saveTicket(ticketData, typeTicket) {
|
static async saveTicket(ticketData, typeTicket) {
|
||||||
const query = `
|
const query = `
|
||||||
INSERT INTO tickets_sn
|
INSERT INTO tickets_sn
|
||||||
(ticket_number, short_description, description, caller_email,
|
(ticket_number, short_description, description, caller_id, caller_email,
|
||||||
location_name, ramal, telefone, opened_at, tipo)
|
location_id, location_name, ramal, telefone, opened_at, tipo)
|
||||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||||
ON CONFLICT (ticket_number)
|
ON CONFLICT (ticket_number)
|
||||||
DO UPDATE SET
|
DO UPDATE SET
|
||||||
short_description = EXCLUDED.short_description,
|
short_description = EXCLUDED.short_description,
|
||||||
description = EXCLUDED.description,
|
description = EXCLUDED.description,
|
||||||
|
location_id = EXCLUDED.location_id,
|
||||||
location_name = EXCLUDED.location_name,
|
location_name = EXCLUDED.location_name,
|
||||||
|
caller_id = EXCLUDED.caller_id,
|
||||||
caller_email = EXCLUDED.caller_email,
|
caller_email = EXCLUDED.caller_email,
|
||||||
ramal = EXCLUDED.ramal,
|
ramal = EXCLUDED.ramal,
|
||||||
telefone = EXCLUDED.telefone,
|
telefone = EXCLUDED.telefone,
|
||||||
updated_at = NOW()
|
updated_at = NOW()
|
||||||
RETURNING id, xmax = 0 as inserted -- xmax = 0 indica INSERT, >0 indica UPDATE`;
|
RETURNING id, xmax = 0 as inserted`;
|
||||||
|
|
||||||
const values = [
|
const values = [
|
||||||
ticketData.number?.value || null,
|
ticketData.number?.value || null,
|
||||||
ticketData.short_description?.value || null,
|
ticketData.short_description?.value || null,
|
||||||
ticketData.description?.value || null,
|
ticketData.description?.value || null,
|
||||||
|
ticketData.opened_by?.display_value || null,
|
||||||
ticketData['opened_by.email']?.value || null,
|
ticketData['opened_by.email']?.value || null,
|
||||||
ticketData.location?.display_value || null,
|
ticketData.location?.value || null, // location_id (value)
|
||||||
|
ticketData.location?.display_value || null, // location_name (display_value)
|
||||||
ticketData['variables.numero_ramal']?.value || null,
|
ticketData['variables.numero_ramal']?.value || null,
|
||||||
ticketData['variables.telephone_favorecido_rh']?.value || null,
|
ticketData['variables.telephone_favorecido_rh']?.value || null,
|
||||||
ticketData.opened_at?.value ? new Date(ticketData.opened_at.value) : null,
|
ticketData.opened_at?.value ? new Date(ticketData.opened_at.value) : null,
|
||||||
typeTicket
|
typeTicket
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await pool.query(query, values);
|
const result = await pool.query(query, values);
|
||||||
const wasInserted = result.rows[0].inserted; // true = INSERT, false = UPDATE
|
const wasInserted = result.rows[0].inserted; // true = INSERT, false = UPDATE
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
CREATE TABLE tickets_sn (
|
CREATE TABLE tickets_sn (
|
||||||
id SERIAL PRIMARY KEY, -- ID automático (1, 2, 3...)
|
id SERIAL PRIMARY KEY, -- ID automático (1, 2, 3...)
|
||||||
ticket_number VARCHAR(32) NOT NULL UNIQUE, -- Número do ticket (INC0140378) - ÚNICO
|
ticket_number VARCHAR(32) NOT NULL UNIQUE, -- Número do ticket (INC0140378) - ÚNICO
|
||||||
sn_ticket_id VARCHAR(64), -- ID interno do ServiceNow
|
|
||||||
short_description TEXT, -- Resumo do problema
|
short_description TEXT, -- Resumo do problema
|
||||||
tipo VARCHAR(10), -- Requisição ou incidente
|
tipo VARCHAR(10), -- Requisição ou incidente
|
||||||
description TEXT, -- Descrição completa
|
description TEXT, -- Descrição completa
|
||||||
caller_id VARCHAR(255), -- ID de quem abriu o ticket
|
caller_id VARCHAR(255), -- Nome de quem abriu o ticket
|
||||||
caller_email VARCHAR(255), -- Email do solicitante
|
caller_email VARCHAR(255), -- Email do solicitante
|
||||||
location_id VARCHAR(64), -- ID da localização
|
location_id VARCHAR(64), -- ID da localização
|
||||||
location_name VARCHAR(255), -- Nome da localização
|
location_name VARCHAR(255), -- Nome da localização
|
||||||
@ -16,3 +15,6 @@ CREATE TABLE tickets_sn (
|
|||||||
updated_at TIMESTAMP DEFAULT NOW() -- Quando atualizamos pela última vez
|
updated_at TIMESTAMP DEFAULT NOW() -- Quando atualizamos pela última vez
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
SELECT * FROM tickets_sn;
|
||||||
|
|||||||
@ -13,7 +13,7 @@ const fetchTicketsFromServiceNow = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// comentado para evitar muitos arquivos
|
// comentado para evitar muitos arquivos
|
||||||
//fs.writeFileSync('servicenow_tickets.json', JSON.stringify(ticketsResponse.data, null, 2));
|
fs.writeFileSync('servicenow_tickets.json', JSON.stringify(ticketsResponse.data, null, 2));
|
||||||
//logInfo('💾 Backup JSON de incidentes salvo', { count: ticketsResponse.data.result.length });
|
//logInfo('💾 Backup JSON de incidentes salvo', { count: ticketsResponse.data.result.length });
|
||||||
|
|
||||||
// Salvar os tickets no banco de dados
|
// Salvar os tickets no banco de dados
|
||||||
@ -38,7 +38,7 @@ const fetchRequestsFromServiceNow = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Comentado para evitar muitos arquivos
|
// Comentado para evitar muitos arquivos
|
||||||
//fs.writeFileSync('servicenow_requests.json', JSON.stringify(requestsResponse.data, null, 2));
|
fs.writeFileSync('servicenow_requests.json', JSON.stringify(requestsResponse.data, null, 2));
|
||||||
//logInfo('💾 Backup JSON de requisições salvo', { count: requestsResponse.data.result.length });
|
//logInfo('💾 Backup JSON de requisições salvo', { count: requestsResponse.data.result.length });
|
||||||
|
|
||||||
// Salvar as requisições no banco de dados
|
// Salvar as requisições no banco de dados
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user