Переписал на 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 => {
|
||||
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 => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (prms && prms.connection) {
|
||||
prms.connection.execute(
|
||||
"BEGIN PKG_EXS.SERVICE_GET(RCSERVICES => :RCSERVICES); END;",
|
||||
{ RCSERVICES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||
{ outFormat: oracledb.OBJECT },
|
||||
(err, result) => {
|
||||
if (err) {
|
||||
reject(new Error(err.message));
|
||||
} else {
|
||||
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 getServices = async prms => {
|
||||
try {
|
||||
let res = await prms.connection.execute(
|
||||
"BEGIN PKG_EXS.SERVICES_GET(RCSERVICES => :RCSERVICES); END;",
|
||||
{ RCSERVICES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||
{ outFormat: oracledb.OBJECT }
|
||||
);
|
||||
let rows = await readCursorData(res.outBinds.RCSERVICES);
|
||||
return rows;
|
||||
} catch (e) {
|
||||
throw new Error(e.message);
|
||||
}
|
||||
};
|
||||
|
||||
//Получение списка функций сервиса
|
||||
const getServiceFunctions = prms => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (prms && prms.connection) {
|
||||
if (prms.nServiceId) {
|
||||
prms.connection.execute(
|
||||
"BEGIN PKG_EXS.SERVICEFN_GET(NSERVICE => :NSERVICE, RCSERVICEFNS => :RCSERVICEFNS); END;",
|
||||
{ NSERVICE: prms.nServiceId, RCSERVICEFNS: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||
{ outFormat: oracledb.OBJECT },
|
||||
(err, result) => {
|
||||
if (err) {
|
||||
reject(new Error(err.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 getServiceFunctions = async prms => {
|
||||
try {
|
||||
let res = await prms.connection.execute(
|
||||
"BEGIN PKG_EXS.SERVICEFN_GET(NSERVICE => :NSERVICE, RCSERVICEFNS => :RCSERVICEFNS); END;",
|
||||
{ NSERVICE: prms.nServiceId, RCSERVICEFNS: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||
{ outFormat: oracledb.OBJECT }
|
||||
);
|
||||
let rows = await readCursorData(res.outBinds.RCSERVICEFNS);
|
||||
return rows;
|
||||
} catch (e) {
|
||||
throw new Error(e.message);
|
||||
}
|
||||
};
|
||||
|
||||
//Запись в протокол работы
|
||||
const log = prms => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (prms && prms.connection) {
|
||||
if (!(prms.nLogState === "undefined")) {
|
||||
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,
|
||||
NEXSSERVICE: prms.nServiceId,
|
||||
NEXSSERVICEFN: prms.nServiceFnId,
|
||||
NEXSQUEUE: prms.nQueueId,
|
||||
RCLOG: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{ outFormat: oracledb.OBJECT, autoCommit: true },
|
||||
(err, result) => {
|
||||
if (err) {
|
||||
reject(new Error(err.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 log = async prms => {
|
||||
try {
|
||||
let res = await 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,
|
||||
NEXSSERVICE: prms.nServiceId,
|
||||
NEXSSERVICEFN: prms.nServiceFnId,
|
||||
NEXSQUEUE: prms.nQueueId,
|
||||
RCLOG: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{ outFormat: oracledb.OBJECT, autoCommit: true }
|
||||
);
|
||||
let rows = await readCursorData(res.outBinds.RCLOG);
|
||||
return rows[0];
|
||||
} catch (e) {
|
||||
throw new Error(e.message);
|
||||
}
|
||||
};
|
||||
|
||||
//Считывание очередной порции исходящих сообщений из очереди
|
||||
const getQueueOutgoing = prms => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (prms && prms.connection) {
|
||||
if (prms.nPortionSize) {
|
||||
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,
|
||||
RCQUEUES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{ outFormat: oracledb.OBJECT, autoCommit: true, fetchInfo: { bMsg: { 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)"));
|
||||
const getQueueOutgoing = async prms => {
|
||||
try {
|
||||
let res = await 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,
|
||||
RCQUEUES: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{
|
||||
outFormat: oracledb.OBJECT,
|
||||
fetchInfo: { blMsg: { type: oracledb.BUFFER }, blResp: { type: oracledb.BUFFER } }
|
||||
}
|
||||
} 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 => {
|
||||
@ -278,10 +187,14 @@ const setQueueState = async prms => {
|
||||
SEXEC_MSG: prms.sExecMsg,
|
||||
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);
|
||||
return rows;
|
||||
return rows[0];
|
||||
} catch (e) {
|
||||
throw new Error(e.message);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user