diff --git a/models/obj_queue.js b/models/obj_queue.js new file mode 100644 index 0000000..9387e91 --- /dev/null +++ b/models/obj_queue.js @@ -0,0 +1,254 @@ +/* + Сервис интеграции ПП Парус 8 с WEB API + Модели данных: Описатель сообщения очереди обмена +*/ + +//---------------------- +// Подключение библиотек +//---------------------- + +const Schema = require("validate"); //Схемы валидации + +//---------- +// Константы +//---------- + +//Состояния исполнения сообщений очереди обмена +const NQUEUE_EXEC_STATE_INQUEUE = 0; //Поставлено в очередь +const NQUEUE_EXEC_STATE_APP = 1; //Обрабатывается сервером приложений +const NQUEUE_EXEC_STATE_APP_OK = 2; //Успешно обработано сервером приложений +const NQUEUE_EXEC_STATE_APP_ERR = 3; //Ошибка обработки сервером приложений +const NQUEUE_EXEC_STATE_DB = 4; //Обрабатывается СУБД +const NQUEUE_EXEC_STATE_DB_OK = 5; //Успешно обработано СУБД +const NQUEUE_EXEC_STATE_DB_ERR = 6; //Ошибка обработки СУБД +const NQUEUE_EXEC_STATE_OK = 7; //Обработано успешно +const NQUEUE_EXEC_STATE_ERR = 8; //Обработано с ошибками +const SQUEUE_EXEC_STATE_INQUEUE = "INQUEUE"; //Поставлено в очередь (строковый код) +const SQUEUE_EXEC_STATE_APP = "APP"; //Обрабатывается сервером приложений (строковый код) +const SQUEUE_EXEC_STATE_APP_OK = "APP_OK"; //Успешно обработано сервером приложений (строковый код) +const SQUEUE_EXEC_STATE_APP_ERR = "APP_ERR"; //Ошибка обработки сервером приложений (строковый код) +const SQUEUE_EXEC_STATE_DB = "DB"; //Обрабатывается СУБД (строковый код) +const SQUEUE_EXEC_STATE_DB_OK = "DB_OK"; //Успешно обработано СУБД (строковый код) +const SQUEUE_EXEC_STATE_DB_ERR = "DB_ERR"; //Ошибка обработки СУБД (строковый код) +const SQUEUE_EXEC_STATE_OK = "OK"; //Обработано успешно (строковый код) +const SQUEUE_EXEC_STATE_ERR = "ERR"; //Обработано с ошибками (строковый код) + +//------------------ +// Интерфейс модуля +//------------------ + +//Константы +exports.NQUEUE_EXEC_STATE_INQUEUE = NQUEUE_EXEC_STATE_INQUEUE; +exports.NQUEUE_EXEC_STATE_APP = NQUEUE_EXEC_STATE_APP; +exports.NQUEUE_EXEC_STATE_APP_OK = NQUEUE_EXEC_STATE_APP_OK; +exports.NQUEUE_EXEC_STATE_APP_ERR = NQUEUE_EXEC_STATE_APP_ERR; +exports.NQUEUE_EXEC_STATE_DB = NQUEUE_EXEC_STATE_DB; +exports.NQUEUE_EXEC_STATE_DB_OK = NQUEUE_EXEC_STATE_DB_OK; +exports.NQUEUE_EXEC_STATE_DB_ERR = NQUEUE_EXEC_STATE_DB_ERR; +exports.NQUEUE_EXEC_STATE_OK = NQUEUE_EXEC_STATE_OK; +exports.NQUEUE_EXEC_STATE_ERR = NQUEUE_EXEC_STATE_ERR; +exports.SQUEUE_EXEC_STATE_INQUEUE = SQUEUE_EXEC_STATE_INQUEUE; +exports.SQUEUE_EXEC_STATE_APP = SQUEUE_EXEC_STATE_APP; +exports.SQUEUE_EXEC_STATE_APP_OK = SQUEUE_EXEC_STATE_APP_OK; +exports.SQUEUE_EXEC_STATE_APP_ERR = SQUEUE_EXEC_STATE_APP_ERR; +exports.SQUEUE_EXEC_STATE_DB = SQUEUE_EXEC_STATE_DB; +exports.SQUEUE_EXEC_STATE_DB_OK = SQUEUE_EXEC_STATE_DB_OK; +exports.SQUEUE_EXEC_STATE_DB_ERR = SQUEUE_EXEC_STATE_DB_ERR; +exports.SQUEUE_EXEC_STATE_OK = SQUEUE_EXEC_STATE_OK; +exports.SQUEUE_EXEC_STATE_ERR = SQUEUE_EXEC_STATE_ERR; + +//Схема валидации сообщения очереди обмена +exports.Queue = new Schema({ + //Идентификатор сообщения очереди обмена + nId: { + type: Number, + required: true, + message: { + type: "Идентификатор сообщения очереди обмена (nId) имеет некорректный тип данных (ожидалось - Number)", + required: "Не указан идентификатор сообщения очереди обмена (nId)" + } + }, + //Дата постановки сообщения в очередь обмена + dInDate: { + type: Date, + required: true, + message: { + type: + "Дата постановки сообщения в очередь обмена (dInDate) имеет некорректный тип данных (ожидалось - Date)", + required: "Не указана дата постановки сообщения в очередь обмена (dInDate)" + } + }, + //Дата постановки сообщения в очередь обмена (строковое представление) + sInDate: { + type: String, + required: true, + message: { + type: + "Строковое представление даты постановки сообщения в очередь обмена (sInDate) имеет некорректный тип данных (ожидалось - String)", + required: "Не указано строковое представление даты постановки сообщения в очередь обмена (sInDate)" + } + }, + //Пользователь поставивший сообщение в очередь обмена + sInAuth: { + type: String, + required: true, + message: { + type: + "Пользователь, поставивший сообщение в очередь обмена (sInAuth) имеет некорректный тип данных (ожидалось - String)", + required: "Не указан пользователь, поставивший сообщение в очередь обмена (sInAuth)" + } + }, + //Идентификатор сервиса-обработчика сообщения очереди обмена + nServiceId: { + type: Number, + required: true, + message: { + type: + "Идентификатор сервиса-обработчика сообщения очереди обмена (nServiceId) имеет некорректный тип данных (ожидалось - Number)", + required: "Не указан идентификатор сервиса-обработчика сообщения очереди обмена (nServiceId)" + } + }, + //Код сервиса-обработчика сообщения очереди обмена + sServiceCode: { + type: String, + required: true, + message: { + type: + "Код сервиса-обработчика сообщения очереди обмена (sServiceCode) имеет некорректный тип данных (ожидалось - String)", + required: "Не указан код сервиса-обработчика сообщения очереди обмена (sServiceCode)" + } + }, + //Идентификатор функции сервиса-обработчика сообщения очереди обмена + nServiceFnId: { + type: Number, + required: true, + message: { + type: + "Идентификатор функции сервиса-обработчика сообщения очереди обмена (nServiceFnId) имеет некорректный тип данных (ожидалось - Number)", + required: "Не указан идентификатор функции сервиса-обработчика сообщения очереди обмена (nServiceFnId)" + } + }, + //Код функции сервиса-обработчика сообщения очереди обмена + sServiceFnCode: { + type: String, + required: true, + message: { + type: + "Код функции сервиса-обработчика сообщения очереди обмена (sServiceFnCode) имеет некорректный тип данных (ожидалось - String)", + required: "Не указан код функции сервиса-обработчика сообщения очереди обмена (sServiceFnCode)" + } + }, + //Дата обработки сообщения очереди обмена + dExecDate: { + type: Date, + required: false, + message: { + type: + "Дата обработки сообщения очереди обмена (dExecDate) имеет некорректный тип данных (ожидалось - Date)", + required: "Не указана дата обработки сообщения очереди обмена (dExecDate)" + } + }, + //Дата обработки сообщения очереди обмена (строковое представление) + sExecDate: { + type: String, + required: false, + message: { + type: + "Строковое представление даты обработки сообщения очереди обмена (sExecDate) имеет некорректный тип данных (ожидалось - String)", + required: "Не указано строковое представление даты обработки сообщения очереди обмена (sExecDate)" + } + }, + //Количество попыток обработки сообщения очереди обмена + nExecCnt: { + type: Number, + required: true, + message: { + type: + "Количество попыток обработки сообщения очереди обмена (nExecCnt) имеет некорректный тип данных (ожидалось - Number)", + required: "Не указано количество попыток обработки сообщения очереди обмена (nExecCnt)" + } + }, + //Состояние обработки сообщения очереди обмена + nExecState: { + type: Number, + enum: [ + NQUEUE_EXEC_STATE_INQUEUE, + NQUEUE_EXEC_STATE_APP, + NQUEUE_EXEC_STATE_APP_OK, + NQUEUE_EXEC_STATE_APP_ERR, + NQUEUE_EXEC_STATE_DB, + NQUEUE_EXEC_STATE_DB_OK, + NQUEUE_EXEC_STATE_DB_ERR, + NQUEUE_EXEC_STATE_OK, + NQUEUE_EXEC_STATE_ERR + ], + required: true, + message: { + type: + "Состояние обработки сообщения очереди обмена (nExecState) имеет некорректный тип данных (ожидалось - Number)", + enum: "Значение состояния обработки сообщения очереди обмена (nExecState) не поддерживается", + required: "Не указано состояние обработки сообщения очереди обмена (nExecState)" + } + }, + //Состояние обработки сообщения очереди обмена (строковый код) + sExecState: { + type: String, + enum: [ + SQUEUE_EXEC_STATE_INQUEUE, + SQUEUE_EXEC_STATE_APP, + SQUEUE_EXEC_STATE_APP_OK, + SQUEUE_EXEC_STATE_APP_ERR, + SQUEUE_EXEC_STATE_DB, + SQUEUE_EXEC_STATE_DB_OK, + SQUEUE_EXEC_STATE_DB_ERR, + SQUEUE_EXEC_STATE_OK, + SQUEUE_EXEC_STATE_ERR + ], + required: true, + message: { + type: + "Строковый код состояния обработки сообщения очереди обмена (sExecState) имеет некорректный тип данных (ожидалось - String)", + enum: + "Значение строкового кода состояния обработки сообщения очереди обмена (sExecState) не поддерживается", + required: "Не указан строковый код состояния обработки сообщения очереди обмена (sExecState)" + } + }, + //Информация от обработчика сообщения очереди обмена + sExecMsg: { + type: String, + required: false, + message: { + type: + "Информация от обработчика сообщения очереди обмена (sExecMsg) имеет некорректный тип данных (ожидалось - String)", + required: "Не указана информация от обработчика сообщения очереди обмена (sExecMsg)" + } + }, + //Данные сообщения очереди обмена + blMsg: { + type: Buffer, + required: false, + message: { + type: "Данные сообщения очереди обмена (blMsg) имеют некорректный тип данных (ожидалось - Buffer)", + required: "Не указаны данные сообщения очереди обмена (blMsg)" + } + }, + //Данные ответа сообщения очереди обмена + blResp: { + type: Buffer, + required: false, + message: { + type: "Данные ответа сообщения очереди обмена (blResp) имеют некорректный тип данных (ожидалось - Buffer)", + required: "Не указаны данные ответа сообщения очереди обмена (blResp)" + } + }, + //Идентификатор связанного сообщения очереди обмена + nQueueId: { + type: Number, + required: false, + message: { + type: + "Идентификатор связанного сообщения очереди обмена (nQueueId) имеет некорректный тип данных (ожидалось - Number)", + required: "Не указан идентификатор связанного сообщения очереди обмена (nQueueId)" + } + } +}); diff --git a/models/obj_queues.js b/models/obj_queues.js new file mode 100644 index 0000000..127fba0 --- /dev/null +++ b/models/obj_queues.js @@ -0,0 +1,38 @@ +/* + Сервис интеграции ПП Парус 8 с WEB API + Модели данных: Описатель списка сообщений очереди обмена +*/ + +//---------------------- +// Подключение библиотек +//---------------------- + +const Schema = require("validate"); //Схемы валидации +const { Queue } = require("./obj_queue"); //Схема валидации сообщения очереди обмена + +//------------ +// Тело модуля +//------------ + +//Описатель схемы валидации списка сервисов +const defQueues = (bRequired, sName) => { + return { + type: Array, + required: bRequired, + each: Queue, + message: { + type: "Список сообщений очереди обмена (" + sName + ") имеет некорректный тип данных (ожидалось - Array)", + required: "Не указан список сообщений очереди обмена (" + sName + ")" + } + }; +}; + +//------------------ +// Интерфейс модуля +//------------------ + +//Описатель схемы валидации списка сервисов +exports.defQueues = defQueues; + +//Схема валидации списка сервисов +exports.Queues = new Schema({ queues: defQueues(true, "queues") });