/*
  Сервис интеграции ПП Парус 8 с WEB API
  Модели данных: описатель сообщений обмена с обработчиком очереди входящих сообщений
*/

//----------------------
// Подключение библиотек
//----------------------

const Schema = require("validate"); //Схемы валидации

//------------------
//  Интерфейс модуля
//------------------

//Схема валидации результата работы функции "предобработки" сообщения очереди сервером приложений
exports.InQueueProcessorFnBefore = new Schema({
    //Параметры ответа системы
    optionsResp: {
        type: Object,
        required: false,
        message: {
            type: path => `Параметры ответа системы (${path}) имеют некорректный тип данных (ожидалось - Object)`,
            required: path => `Не указаны параметры ответа системы (${path})`
        }
    },
    //Обработанный запрос внешней системы
    blMsg: {
        type: Buffer,
        required: false,
        message: {
            type: path =>
                `Обработанный запрос внешней системы (${path}) имеет некорректный тип данных (ожидалось - Buffer)`,
            required: path => `Не указан Обработанный запрос внешней системы (${path})`
        }
    },
    //Ответ системы
    blResp: {
        type: Buffer,
        required: false,
        message: {
            type: path => `Ответ системы (${path}) имеет некорректный тип данных (ожидалось - Buffer)`,
            required: path => `Не указан ответ системы (${path})`
        }
    },
    //Флаг ошибки аутентификации удаленного клиента
    bUnAuth: {
        type: Boolean,
        required: false,
        message: {
            type: path =>
                `Флаг ошибки аутентификации удаленного клиента  (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
            required: path => `Не указан флаг ошибки аутентификации удаленного клиента (${path})`
        }
    },
    //Флаг прекращения дальнейшей обработки сообщения
    bStopPropagation: {
        type: Boolean,
        required: false,
        message: {
            type: path =>
                `Флаг прекращения дальнейшей обработки сообщения  (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
            required: path => `Не указан флаг прекращения дальнейшей обработки сообщения (${path})`
        }
    }
});

//Схема валидации результата работы функции "постобработки" сообщения очереди сервером приложений
exports.InQueueProcessorFnAfter = new Schema({
    //Параметры ответа системы
    optionsResp: {
        type: Object,
        required: false,
        message: {
            type: path => `Параметры ответа системы (${path}) имеют некорректный тип данных (ожидалось - Object)`,
            required: path => `Не указаны параметры ответа системы (${path})`
        }
    },
    //Обработанный ответ системы
    blResp: {
        type: Buffer,
        required: false,
        message: {
            type: path => `Обработанный ответ системы (${path}) имеет некорректный тип данных (ожидалось - Buffer)`,
            required: path => `Не указан обработанный ответ системы (${path})`
        }
    },
    //Флаг ошибки аутентификации удаленного клиента
    bUnAuth: {
        type: Boolean,
        required: false,
        message: {
            type: path =>
                `Флаг ошибки аутентификации удаленного клиента  (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
            required: path => `Не указан флаг ошибки аутентификации удаленного клиента (${path})`
        }
    }
});
