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

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

const Schema = require("validate"); //Схемы валидации
const { NLOG_STATE_INF, NLOG_STATE_WRN, NLOG_STATE_ERR } = require("./obj_log"); //Схемы валидации записи журнала работы сервиса обмена

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

//Схема валидации параметров функции записи в журнал работы сервиса
exports.log = new Schema({
    //Тип сообщения журнала работы сервиса
    nLogState: {
        type: Number,
        enum: [NLOG_STATE_INF, NLOG_STATE_WRN, NLOG_STATE_ERR],
        required: true,
        message: {
            type: path =>
                `Тип сообщения журнала работы сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
            enum: path => `Значение типа сообщения журнала работы сервиса (${path}) не поддерживается`,
            required: path => `Не указан тип сообщения журнала работы сервиса (${path})`
        }
    },
    //Сообщение журнала работы сервиса
    sMsg: {
        type: String,
        required: true,
        message: {
            type: path =>
                `Сообщение журнала работы сервиса (${path}) имеет некорректный тип данных (ожидалось - String)`,
            required: path => `Не указано сообщение журнала работы сервиса (${path})`
        }
    },
    //Идентификатор связанного сервиса
    nServiceId: {
        type: Number,
        required: false,
        message: {
            type: path =>
                `Идентификатор связанного сервиса сообщения журнала работы сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
            required: path => `Не указан идентификатор связанного сервиса сообщения журнала работы сервиса (${path})`
        }
    },
    //Идентификатор связанной функции-обработчика сервиса
    nServiceFnId: {
        type: Number,
        required: false,
        message: {
            type: path =>
                `Идентификатор связанной функции-обработчика сообщения журнала работы сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
            required: path =>
                `Не указан идентификатор связанной функции-обработчика сообщения журнала работы сервиса (${path})`
        }
    },
    //Идентификатор связанной позиции очереди обмена
    nQueueId: {
        type: Number,
        required: false,
        message: {
            type: path =>
                `Идентификатор связанной позиции очереди обмена сообщения журнала работы сервиса (${path}) имеет некорректный тип данных (ожидалось - Number)`,
            required: path =>
                `Не указан идентификатор связанной позиции очереди обмена сообщения журнала работы сервиса (${path})`
        }
    }
});
