Схемы валидации очереди обмена и сообщения очереди обмена

This commit is contained in:
Mikhail Chechnev 2018-11-25 00:13:28 +03:00
parent 875b11a01e
commit 37e9d7c7c0
2 changed files with 292 additions and 0 deletions

254
models/obj_queue.js Normal file
View File

@ -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)"
}
}
});

38
models/obj_queues.js Normal file
View File

@ -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") });