Problema de actuallizacion de operation resuelto
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Result } from "#shared/domain/Result.js";
|
||||
|
||||
export type StatusEnum = Objenious.Status | 'noMassID';
|
||||
export type StatusEnum = 'error' | 'finished' | 'noRequestId' | 'running' | 'noMassID';
|
||||
|
||||
export interface IOperationsRepository {
|
||||
createOperation(data: ObjeniousOperation): Promise<Result<string, ObjeniousOperation>>
|
||||
@@ -20,6 +20,7 @@ export type ObjeniousOperation = {
|
||||
end_date?: Date | null;
|
||||
error?: string | null;
|
||||
status: StatusEnum;
|
||||
objenioius_status: string;
|
||||
last_change_date?: string;
|
||||
}
|
||||
|
||||
@@ -29,6 +30,9 @@ export type ObjeniousOperationChange = {
|
||||
info?: string | null;
|
||||
error?: string | null;
|
||||
new_status: StatusEnum;
|
||||
previous_status?: StatusEnum;
|
||||
new_objenious_status?: string;
|
||||
previous_objenious_status?: string;
|
||||
new_request_id?: string;
|
||||
new_mass_action_id?: string;
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@ export class OperationsRepository implements IOperationsRepository {
|
||||
INSERT INTO objenious_operation (operation, iccids, status, max_retry, request_id)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
RETURNING *`;
|
||||
const iccids = data.iccids.join(",")
|
||||
const values = [data.operation, data.iccids, data.status, data.max_retry, data.request_id];
|
||||
const iccids = JSON.stringify(data.iccids)
|
||||
const values = [data.operation, iccids, data.status, data.max_retry, data.request_id];
|
||||
const { rows } = await this.pgClient.query(query, values);
|
||||
return <Result<string, ObjeniousOperation>>{
|
||||
data: rows[0]
|
||||
@@ -26,34 +26,52 @@ export class OperationsRepository implements IOperationsRepository {
|
||||
|
||||
async updateOperation(data: ObjeniousOperationChange): Promise<Result<string, ObjeniousOperation>> {
|
||||
const client = await this.pgClient.connect();
|
||||
const { new_status, error, new_request_id, new_mass_action_id, id } = data
|
||||
const {
|
||||
new_status,
|
||||
previous_status,
|
||||
error,
|
||||
new_request_id,
|
||||
new_mass_action_id,
|
||||
operation_id,
|
||||
new_objenious_status,
|
||||
previous_objenious_status
|
||||
} = data
|
||||
|
||||
try {
|
||||
await client.query('BEGIN');
|
||||
|
||||
// 1. Actualizar objenious_operation
|
||||
// 1. Actualizar objenious_operation (la operacion base)
|
||||
const updateParams = [operation_id, new_status, error, new_request_id, new_mass_action_id, new_objenious_status]
|
||||
console.log("updateParams", updateParams)
|
||||
const updateOpQuery = `
|
||||
UPDATE objenious_operation
|
||||
SET
|
||||
status = $1,
|
||||
error = COALESCE($2,error),
|
||||
request_id = COALESCE($3, request_id),
|
||||
mass_action_id = COALESCE($4, mass_action_id),
|
||||
status = $2::status_enum,
|
||||
error = COALESCE($3,error),
|
||||
request_id = COALESCE($4, request_id),
|
||||
mass_action_id = COALESCE($5, mass_action_id),
|
||||
last_change_date = now(),
|
||||
end_date = CASE WHEN $1 IN ('finished', 'error') THEN now() ELSE end_date END
|
||||
WHERE id = $5`;
|
||||
const operation = await client.query<ObjeniousOperation>(updateOpQuery, [new_status, error, new_request_id, new_mass_action_id, id]);
|
||||
end_date = CASE WHEN $2::status_enum IN ('finished', 'error') THEN now() ELSE end_date END,
|
||||
objenious_status = $6
|
||||
WHERE id = $1`;
|
||||
|
||||
// 2. Nuevo registro en objenious_operation_change
|
||||
const operation = await client.query<ObjeniousOperation>(
|
||||
updateOpQuery, updateParams)
|
||||
|
||||
console.log("Operacion base acualizada")
|
||||
// 2. Nuevo registro en objenious_operation_change (indica un cambio de estado)
|
||||
const insertChangeQuery = `
|
||||
INSERT INTO objenious_operation_change (operation_id, new_status, error, new_request_id, new_mass_action_id)
|
||||
VALUES ($1, $2, $3, $4, $5)`;
|
||||
await client.query(insertChangeQuery, [id, new_status, error, new_request_id, new_mass_action_id]);
|
||||
INSERT INTO objenious_operation_change (operation_id, new_status, previous_status, error, new_request_id, new_mass_action_id, new_objenious_status, previous_objenious_status)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`;
|
||||
await client.query(insertChangeQuery, [operation_id, new_status, previous_status, error, new_request_id, new_mass_action_id, new_objenious_status, previous_objenious_status]);
|
||||
console.log("Nuevo registro de actualizacion")
|
||||
await client.query('COMMIT');
|
||||
|
||||
return <Result<string, ObjeniousOperation>>{
|
||||
data: operation.rows[0]
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Error añadiendo actualizacion de la operation", e)
|
||||
console.error("datos errorneos", data)
|
||||
await client.query('ROLLBACK');
|
||||
return <Result<string, ObjeniousOperation>>{
|
||||
data: undefined,
|
||||
|
||||
Reference in New Issue
Block a user