/* Сервис интеграции ПП Парус 8 с WEB API Модели данных: описатель объекта конфигурации приложения */ //---------------------- // Подключение библиотек //---------------------- const Schema = require("validate"); //Схемы валидации //------------- // Тело модуля //------------- //Функция проверки значения размера блока одновременно обрабатываемых исходящих сообщений const validateMaxWorkers = val => val >= 1 && val <= 100 && Number.isInteger(val); //Функция проверки значения интервала проверки наличия исходящих сообщений const validateCheckTimeout = val => val >= 1 && val <= 60000 && Number.isInteger(val); //Функция проверки значения порта сервера обслуживания входящих сообщений const validateInComingPort = val => val >= 0 && val <= 65535 && Number.isInteger(val); //Функция проверки значения порта сервера обслуживания входящих сообщений const validateMsgMaxSize = val => val >= 1 && val <= 1000 && Number.isInteger(val); //Схема валидации параметров подключения к БД const dbConnect = new Schema({ //Пользователь БД sUser: { type: String, required: true, message: { type: path => `Имя пользователя БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указано имя пользователя БД (${path})` } }, //Пароль пользователя БД sPassword: { type: String, required: true, message: { type: path => `Пароль пользователя БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан пароль пользователя БД (${path})` } }, //Схема размещения используемых объектов БД sSchema: { type: String, required: true, message: { type: path => `Схема размещения используемых объектов БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указана схема размещения используемых объектов БД (${path})` } }, //Строка подключения к БД sConnectString: { type: String, required: true, message: { type: path => `Строка подключения к БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указана строка подключения к БД (${path})` } }, //Наименование сервера приложений в сессии БД sSessionAppName: { type: String, required: true, message: { type: path => `Наименование сервера приложений в сессии БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указано наименование сервера приложений в сессии БД (${path})` } }, //Наименование подключаемого модуля обслуживания БД sConnectorModule: { type: String, required: true, message: { type: path => `Наименование подключаемого модуля обслуживания БД (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указано наименование подключаемого модуля обслуживания БД (${path})` } } }); //Схема валидации параметров обработки очереди исходящих сообщений const outGoing = new Schema({ //Количество одновременно обрабатываемых исходящих сообщений nMaxWorkers: { type: Number, required: true, use: { validateMaxWorkers }, message: { type: path => `Количество одновременно обрабатываемых исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указано количество одновременно обрабатываемых исходящих сообщений (${path})`, validateMaxWorkers: path => `Количество одновременно обрабатываемых исходящих сообщений (${path}) должно быть целым числом в диапазоне от 1 до 100` } }, //Интервал проверки наличия исходящих сообщений (мс) nCheckTimeout: { type: Number, required: true, use: { validateCheckTimeout }, message: { type: path => `Интервал проверки наличия исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан интервал проверки наличия исходящих сообщений (${path})`, validateCheckTimeout: path => `Значение интервала проверки наличия исходящих сообщений (${path}) должно быть целым числом в диапазоне от 100 до 60000` } } }); //Схема валидации параметров обработки очереди входящих сообщений const inComing = new Schema({ //Порт сервера входящих сообщений nPort: { type: Number, required: true, use: { validateInComingPort }, message: { type: path => `Порт сервера входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан порт сервера входящих сообщений (${path})`, validateInComingPort: path => `Порт сервера входящих сообщений (${path}) должен быть целым числом в диапазоне от 0 до 65535` } }, //Максимальный размер входящего сообщения (мб) nMsgMaxSize: { type: Number, required: true, use: { validateMsgMaxSize }, message: { type: path => `Максимальный размер входящего сообщения (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан максимальный размер входящего сообщения (${path})`, validateMsgMaxSize: path => `Максимальный размер входящего сообщения (${path}) должен быть целым числом в диапазоне от 1 до 1000` } }, //Каталог размещения статических ресурсов sStaticDir: { type: String, required: true, message: { type: path => `Каталог размещения статических ресурсов (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан каталог размещения статических ресурсов (${path})` } } }); //Схема валидации параметров отправки E-Mail уведомлений const mail = new Schema({ //Адреc сервера SMTP sHost: { type: String, required: true, message: { type: path => `Адреc сервера SMTP (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан aдреc сервера SMTP (${path})` } }, //Порт сервера SMTP nPort: { type: Number, required: true, message: { type: path => `Порт сервера SMTP (${path}) имеет некорректный тип данных (ожидалось - Number)`, required: path => `Не указан порт сервера SMTP (${path})` } }, //Имя пользователя SMTP-сервера sUser: { type: String, required: true, message: { type: path => `Имя пользователя SMTP-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указано имя пользователя SMTP-сервера (${path})` } }, //Пароль пользователя SMTP-сервера sPass: { type: String, required: true, message: { type: path => `Пароль пользователя SMTP-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан пароль пользователя SMTP-сервера (${path})` } }, //Наименование отправителя для исходящих сообщений sFrom: { type: String, required: true, message: { type: path => `Наименование отправителя для исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указано наименование отправителя для исходящих сообщений (${path})` } } }); //Схема валидации файла конфигурации const config = new Schema({ //Параметры подключения к БД dbConnect: { schema: dbConnect, required: true, message: { required: path => `Не указаны параметры подключения к БД (${path})` } }, //Параметры обработки очереди исходящих сообщений outGoing: { schema: outGoing, required: true, message: { required: path => `Не указаны параметры обработки очереди исходящих сообщений (${path})` } }, //Параметры обработки очереди входящих сообщений inComing: { schema: inComing, required: true, message: { required: path => `Не указаны параметры обработки очереди входящих сообщений (${path})` } }, //Параметры отправки E-Mail уведомлений mail: { schema: mail, required: true, message: { required: path => `Не указаны параметры отправки E-Mail уведомлений (${path})` } } }); //------------------ // Интерфейс модуля //------------------ //Схема валидации записи журнала работы сервиса обмена exports.dbConnect = dbConnect; //Схема валидации параметров обработки очереди исходящих сообщений exports.outGoing = outGoing; //Схема валидации параметров обработки очереди входящих сообщений exports.inComing = inComing; //Схема валидации параметров отправки E-Mail уведомлений exports.mail = mail; //Схема валидации файла конфигурации exports.config = config;