Переписал на async/await вместо Promise
This commit is contained in:
parent
c9b4fe161c
commit
c71192553b
@ -57,41 +57,6 @@ const SQUEUE_EXEC_STATE_ERR = "ERR"; //Обработано с ошибками
|
|||||||
// Тело модуля
|
// Тело модуля
|
||||||
//------------
|
//------------
|
||||||
|
|
||||||
//Подключение к БД
|
|
||||||
const connect = async prms => {
|
|
||||||
try {
|
|
||||||
if (prms && prms.sUser && prms.sPassword && prms.sConnectString) {
|
|
||||||
const conn = await oracledb.getConnection({
|
|
||||||
user: prms.sUser,
|
|
||||||
password: prms.sPassword,
|
|
||||||
connectString: prms.sConnectString
|
|
||||||
});
|
|
||||||
if (prms.sSessionAppName) conn.module = prms.sSessionAppName;
|
|
||||||
return conn;
|
|
||||||
} else {
|
|
||||||
throw new Error(
|
|
||||||
"Не указаны параметры подключения (отсутствует одно из полей: sUser, sPassword, sConnectString)"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
throw new Error(e.message);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//Отключение от БД
|
|
||||||
const disconnect = async prms => {
|
|
||||||
if (prms && prms.connection) {
|
|
||||||
try {
|
|
||||||
const conn = await prms.connection.close();
|
|
||||||
return;
|
|
||||||
} catch (e) {
|
|
||||||
throw new Error(e.message);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new Error("Не указано подключение (отсутствует поле: connection)");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//Чтение данных из курсора
|
//Чтение данных из курсора
|
||||||
const readCursorData = cursor => {
|
const readCursorData = cursor => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -109,163 +74,107 @@ const readCursorData = cursor => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Подключение к БД
|
||||||
|
const connect = async prms => {
|
||||||
|
try {
|
||||||
|
const conn = await oracledb.getConnection({
|
||||||
|
user: prms.sUser,
|
||||||
|
password: prms.sPassword,
|
||||||
|
connectString: prms.sConnectString
|
||||||
|
});
|
||||||
|
if (prms.sSessionAppName) conn.module = prms.sSessionAppName;
|
||||||
|
return conn;
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Отключение от БД
|
||||||
|
const disconnect = async prms => {
|
||||||
|
try {
|
||||||
|
await prms.connection.close();
|
||||||
|
return;
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//Получение списка сервисов
|
//Получение списка сервисов
|
||||||
const getServices = prms => {
|
const getServices = async prms => {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
if (prms && prms.connection) {
|
let res = await prms.connection.execute(
|
||||||
prms.connection.execute(
|
"BEGIN PKG_EXS.SERVICES_GET(RCSERVICES => :RCSERVICES); END;",
|
||||||
"BEGIN PKG_EXS.SERVICE_GET(RCSERVICES => :RCSERVICES); END;",
|
{ RCSERVICES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||||
{ RCSERVICES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
{ outFormat: oracledb.OBJECT }
|
||||||
{ outFormat: oracledb.OBJECT },
|
);
|
||||||
(err, result) => {
|
let rows = await readCursorData(res.outBinds.RCSERVICES);
|
||||||
if (err) {
|
return rows;
|
||||||
reject(new Error(err.message));
|
} catch (e) {
|
||||||
} else {
|
throw new Error(e.message);
|
||||||
let cursor = result.outBinds.RCSERVICES;
|
}
|
||||||
let queryStream = cursor.toQueryStream();
|
|
||||||
let rows = [];
|
|
||||||
queryStream.on("data", row => {
|
|
||||||
rows.push(row);
|
|
||||||
});
|
|
||||||
queryStream.on("error", err => {
|
|
||||||
reject(new Error(err.message));
|
|
||||||
});
|
|
||||||
queryStream.on("close", () => {
|
|
||||||
resolve(rows);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указано подключение (отсутствует поле: connection)"));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//Получение списка функций сервиса
|
//Получение списка функций сервиса
|
||||||
const getServiceFunctions = prms => {
|
const getServiceFunctions = async prms => {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
if (prms && prms.connection) {
|
let res = await prms.connection.execute(
|
||||||
if (prms.nServiceId) {
|
"BEGIN PKG_EXS.SERVICEFN_GET(NSERVICE => :NSERVICE, RCSERVICEFNS => :RCSERVICEFNS); END;",
|
||||||
prms.connection.execute(
|
{ NSERVICE: prms.nServiceId, RCSERVICEFNS: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||||
"BEGIN PKG_EXS.SERVICEFN_GET(NSERVICE => :NSERVICE, RCSERVICEFNS => :RCSERVICEFNS); END;",
|
{ outFormat: oracledb.OBJECT }
|
||||||
{ NSERVICE: prms.nServiceId, RCSERVICEFNS: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
);
|
||||||
{ outFormat: oracledb.OBJECT },
|
let rows = await readCursorData(res.outBinds.RCSERVICEFNS);
|
||||||
(err, result) => {
|
return rows;
|
||||||
if (err) {
|
} catch (e) {
|
||||||
reject(new Error(err.message));
|
throw new Error(e.message);
|
||||||
} else {
|
}
|
||||||
let cursor = result.outBinds.RCSERVICEFNS;
|
|
||||||
let queryStream = cursor.toQueryStream();
|
|
||||||
let rows = [];
|
|
||||||
queryStream.on("data", row => {
|
|
||||||
rows.push(row);
|
|
||||||
});
|
|
||||||
queryStream.on("error", err => {
|
|
||||||
reject(new Error(err.message));
|
|
||||||
});
|
|
||||||
queryStream.on("close", () => {
|
|
||||||
resolve(rows);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указан идентификатор сервиса (отсутствует поле: nServiceId)"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указано подключение (отсутствует поле: connection)"));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//Запись в протокол работы
|
//Запись в протокол работы
|
||||||
const log = prms => {
|
const log = async prms => {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
if (prms && prms.connection) {
|
let res = await prms.connection.execute(
|
||||||
if (!(prms.nLogState === "undefined")) {
|
"BEGIN PKG_EXS.LOG_PUT(NLOG_STATE => :NLOG_STATE, SMSG => :SMSG, NEXSSERVICE => :NEXSSERVICE, NEXSSERVICEFN => :NEXSSERVICEFN, NEXSQUEUE => :NEXSQUEUE, RCLOG => :RCLOG); END;",
|
||||||
prms.connection.execute(
|
{
|
||||||
"BEGIN PKG_EXS.LOG_PUT(NLOG_STATE => :NLOG_STATE, SMSG => :SMSG, NEXSSERVICE => :NEXSSERVICE, NEXSSERVICEFN => :NEXSSERVICEFN, NEXSQUEUE => :NEXSQUEUE, RCLOG => :RCLOG); END;",
|
NLOG_STATE: prms.nLogState,
|
||||||
{
|
SMSG: prms.sMsg,
|
||||||
NLOG_STATE: prms.nLogState,
|
NEXSSERVICE: prms.nServiceId,
|
||||||
SMSG: prms.sMsg,
|
NEXSSERVICEFN: prms.nServiceFnId,
|
||||||
NEXSSERVICE: prms.nServiceId,
|
NEXSQUEUE: prms.nQueueId,
|
||||||
NEXSSERVICEFN: prms.nServiceFnId,
|
RCLOG: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||||
NEXSQUEUE: prms.nQueueId,
|
},
|
||||||
RCLOG: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
{ outFormat: oracledb.OBJECT, autoCommit: true }
|
||||||
},
|
);
|
||||||
{ outFormat: oracledb.OBJECT, autoCommit: true },
|
let rows = await readCursorData(res.outBinds.RCLOG);
|
||||||
(err, result) => {
|
return rows[0];
|
||||||
if (err) {
|
} catch (e) {
|
||||||
reject(new Error(err.message));
|
throw new Error(e.message);
|
||||||
} else {
|
}
|
||||||
let cursor = result.outBinds.RCLOG;
|
|
||||||
let queryStream = cursor.toQueryStream();
|
|
||||||
let rows = [];
|
|
||||||
queryStream.on("data", row => {
|
|
||||||
rows.push(row);
|
|
||||||
});
|
|
||||||
queryStream.on("error", err => {
|
|
||||||
reject(new Error(err.message));
|
|
||||||
});
|
|
||||||
queryStream.on("close", () => {
|
|
||||||
resolve(rows[0]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указан тип сообщения журнала (отсутствует поле: nLogState)"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указано подключение (отсутствует поле: connection)"));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//Считывание очередной порции исходящих сообщений из очереди
|
//Считывание очередной порции исходящих сообщений из очереди
|
||||||
const getQueueOutgoing = prms => {
|
const getQueueOutgoing = async prms => {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
if (prms && prms.connection) {
|
let res = await prms.connection.execute(
|
||||||
if (prms.nPortionSize) {
|
"BEGIN PKG_EXS.QUEUE_NEXT_GET(NPORTION_SIZE => :NPORTION_SIZE, NSRV_TYPE => :NSRV_TYPE, RCQUEUES => :RCQUEUES); END;",
|
||||||
prms.connection.execute(
|
{
|
||||||
"BEGIN PKG_EXS.QUEUE_NEXT_GET(NPORTION_SIZE => :NPORTION_SIZE, NSRV_TYPE => :NSRV_TYPE, RCQUEUES => :RCQUEUES); END;",
|
NPORTION_SIZE: prms.nPortionSize,
|
||||||
{
|
NSRV_TYPE: NSRV_TYPE_SEND,
|
||||||
NPORTION_SIZE: prms.nPortionSize,
|
RCQUEUES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||||
NSRV_TYPE: NSRV_TYPE_SEND,
|
},
|
||||||
RCQUEUES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
{
|
||||||
},
|
outFormat: oracledb.OBJECT,
|
||||||
{ outFormat: oracledb.OBJECT, autoCommit: true, fetchInfo: { bMsg: { type: oracledb.BUFFER } } },
|
fetchInfo: { blMsg: { type: oracledb.BUFFER }, blResp: { type: oracledb.BUFFER } }
|
||||||
(err, result) => {
|
|
||||||
if (err) {
|
|
||||||
reject(new Error(err.message));
|
|
||||||
} else {
|
|
||||||
let cursor = result.outBinds.RCQUEUES;
|
|
||||||
let queryStream = cursor.toQueryStream();
|
|
||||||
let rows = [];
|
|
||||||
queryStream.on("data", row => {
|
|
||||||
rows.push(row);
|
|
||||||
});
|
|
||||||
queryStream.on("error", err => {
|
|
||||||
reject(new Error(err.message));
|
|
||||||
});
|
|
||||||
queryStream.on("close", () => {
|
|
||||||
resolve(rows);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
reject(new Error("Не указан размер извлекаемой порции сообщений (отсутствует поле: nPortionSize)"));
|
|
||||||
}
|
}
|
||||||
} else {
|
);
|
||||||
reject(new Error("Не указано подключение (отсутствует поле: connection)"));
|
let rows = await readCursorData(res.outBinds.RCQUEUES);
|
||||||
}
|
return rows;
|
||||||
});
|
} catch (e) {
|
||||||
|
throw new Error(e.message);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//Помещение очередного входящего сообщения в очередь
|
//Помещение очередного входящего сообщения в очередь
|
||||||
const putQueueIncoming = prms => {};
|
const putQueueIncoming = async prms => {};
|
||||||
|
|
||||||
//Установка значения в сообщении очереди
|
//Установка значения в сообщении очереди
|
||||||
const setQueueState = async prms => {
|
const setQueueState = async prms => {
|
||||||
@ -278,10 +187,14 @@ const setQueueState = async prms => {
|
|||||||
SEXEC_MSG: prms.sExecMsg,
|
SEXEC_MSG: prms.sExecMsg,
|
||||||
RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||||
},
|
},
|
||||||
{ outFormat: oracledb.OBJECT, autoCommit: true, fetchInfo: { bMsg: { type: oracledb.BUFFER } } }
|
{
|
||||||
|
outFormat: oracledb.OBJECT,
|
||||||
|
autoCommit: true,
|
||||||
|
fetchInfo: { blMsg: { type: oracledb.BUFFER }, blResp: { type: oracledb.BUFFER } }
|
||||||
|
}
|
||||||
);
|
);
|
||||||
let rows = await readCursorData(res.outBinds.RCQUEUE);
|
let rows = await readCursorData(res.outBinds.RCQUEUE);
|
||||||
return rows;
|
return rows[0];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error(e.message);
|
throw new Error(e.message);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user