From 5b35c48e0ac46f2da7b77c4a1fed0af868f270f7 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 5 Dec 2018 22:27:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D1=85=D0=B5=D0=BC=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BC=D0=B5=D0=BD=D0=B0=20=D1=81=20=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA=D0=B8=D0=BC=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE=D0=BC=20-=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=91=D0=BC=20=D0=BB=D1=8E=D0=B1?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D1=8B,=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=91=D0=BD=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=BE=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/obj_out_queue_processor.js | 165 +++++++++++++++++++++++++----- 1 file changed, 139 insertions(+), 26 deletions(-) diff --git a/models/obj_out_queue_processor.js b/models/obj_out_queue_processor.js index 3df1948..b22093e 100644 --- a/models/obj_out_queue_processor.js +++ b/models/obj_out_queue_processor.js @@ -8,9 +8,45 @@ //---------------------- const Schema = require("validate"); //Схемы валидации -const { Queue } = require("./obj_queue"); //Схема валидации сообщения очереди обмена const { Service } = require("./obj_service"); //Схема валидации сервиса -const { NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR } = require("./obj_queue"); //Схема валидации сообщения очереди обмена +const { ServiceFunction } = require("./obj_service_function"); //Схема валидации функции сервиса +const { + 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 +} = require("./obj_queue"); //Схема валидации сообщения очереди обмена + +//------------ +// Тело модуля +//------------ + +//Валидация данных сообщения очереди +const validateBuffer = val => { + //Либо null + if (val === null) { + return true; + } else { + //Либо данные для формирования Buffer + const s = new Schema({ + type: { + type: String, + required: true + }, + data: { + type: Array, + required: true + } + }); + const errs = s.validate(val, { strip: false }); + return errs.length == 0; + } +}; //------------------ // Интерфейс модуля @@ -18,22 +54,76 @@ const { NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR } = require("./obj_q //Схема валидации задачи обработчику очереди исходящих сообщений exports.OutQueueProcessorTask = new Schema({ - //Запись журнала обмена для обработки - queue: { - //schema: Queue, - required: false, + //Идентификатор записи журнала обмена для обработки + nQueueId: { + type: Number, + required: true, message: { - required: "Не указано обрабатываемое сообщение очереди (queue)" + type: path => + `Идентификатор записи журнала обмена для обработки (${path}) имеет некорректный тип данных (ожидалось - Number)`, + required: path => `Не указан идентификатор записи журнала обмена для обработки (${path})` } }, - //Cервис - service: { - //schema: Service, - required: false, + //Состояние обработки сообщения очереди обмена + 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: { - required: "Не указан сервис для обработки сообщения очереди (service)" + type: path => + `Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`, + enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`, + required: path => `Не указано состояние обработки сообщения очереди обмена (${path})` + } + }, + //Данные сообщения очереди обмена + blMsg: { + use: { validateBuffer }, + required: true, + message: { + validateBuffer: path => + `Данные записи журнала обмена для обработки (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`, + required: path => `Не указаны данные сообщения очереди обмена (${path})` + } + }, + //Данные ответа на сообщение очереди обмена + blResp: { + use: { validateBuffer }, + required: true, + message: { + validateBuffer: path => + `Данные ответа (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`, + required: path => `Не указаны данные ответа (${path})` + } + }, + //Cервис-обработчик + service: { + schema: Service, + required: true, + message: { + required: path => `Не указан сервис для обработки сообщения очереди (${path})` + } + }, + //Функция сервиса-обработчика + function: { + schema: ServiceFunction, + required: true, + message: { + required: path => `Не указана функция сервиса для обработки сообщения очереди (${path})` } } +}).validator({ + required: val => typeof val != "undefined" }); //Схема валидации ответа обработчика очереди исходящих сообщений @@ -41,13 +131,23 @@ exports.OutQueueProcessorTaskResult = new Schema({ //Состояние обработки сообщения очереди обмена nExecState: { type: Number, - enum: [NQUEUE_EXEC_STATE_APP_OK, NQUEUE_EXEC_STATE_APP_ERR], + 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)" + type: path => + `Состояние обработки сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - Number)`, + enum: path => `Значение состояния обработки сообщения очереди обмена (${path}) не поддерживается`, + required: path => `Не указано состояние обработки сообщения очереди обмена (${path})` } }, //Информация от обработчика сообщения очереди обмена @@ -55,18 +155,31 @@ exports.OutQueueProcessorTaskResult = new Schema({ type: String, required: false, message: { - type: - "Информация от обработчика сообщения очереди обмена (sExecMsg) имеет некорректный тип данных (ожидалось - String)", - required: "Не указана информация от обработчика сообщения очереди обмена (sExecMsg)" + type: path => + `Информация от обработчика сообщения очереди обмена (${path}) имеет некорректный тип данных (ожидалось - String)`, + required: path => `Не указана информация от обработчика сообщения очереди обмена (${path})` } }, - //Данные ответа - blResp: { - type: Buffer, - required: false, + //Данные сообщения очереди обмена + blMsg: { + use: { validateBuffer }, + required: true, message: { - type: "Данные ответа сообщения очереди обмена (blResp) имеют некорректный тип данных (ожидалось - Buffer)", - required: "Не указаны данные ответа сообщения очереди обмена (blResp)" + validateBuffer: path => + `Данные сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`, + required: path => `Не указаны данные сообщения очереди обмена (${path})` + } + }, + //Данные ответа сообщения очереди обмена + blResp: { + use: { validateBuffer }, + required: true, + message: { + validateBuffer: path => + `Данные ответа сообщения очереди обмена (${path}) имеют некорректный тип данных (ожидалось - null или {type: String, data: Array})`, + required: path => `Не указаны данные ответа сообщения очереди обмена (${path})` } } +}).validator({ + required: val => typeof val != "undefined" });