/* Сервис интеграции ПП Парус 8 с WEB API Дополнительный модуль: Публикация аналитических данных (OLAPP) */ //------------------------------ // Подключение внешних библиотек //------------------------------ const { ServerError } = require("./../core/server_errors"); //Типовая ошибка const { SERR_APP_SERVER_BEFORE, SERR_DB_SERVER } = require("./../core/constants"); //Общесистемные константы //------------ // Тело модуля //------------ //Обработчик "До" для полученного сообщения const before = async prms => { //Если передан идентификатор публикации if (prms.options.qs && prms.options.qs.STOKEN && prms.options.qs.NPREVIEW && prms.options.qs.NACTUAL_CHECK) { //И есть подключение к БД if (prms.dbConn.bConnected) { let olappExtractData = await prms.dbConn.executeStored({ sName: "PKG_EXS_EXT_OLAPP_RUN.EXTRACT", inPrms: { STOKEN: prms.options.qs.STOKEN, NPREVIEW: prms.options.qs.NPREVIEW, NACTUAL_CHECK: prms.options.qs.NACTUAL_CHECK }, outPrms: { RCDATA: prms.dbConn.connector.DT_CURSOR } }); //Установим заголовок ответа и начнём выдачу данных prms.res.set({ "content-type": "application/json;charset=utf-8" }); prms.res.write("["); if (olappExtractData) if (olappExtractData.RCDATA) { let cnt = 1; olappExtractData.RCDATA.map(row => { prms.res.write(Buffer.from(`${cnt > 1 ? "," : ""}${JSON.stringify(row)}`)); cnt++; }); } //Завершаем передачу prms.res.write("]"); prms.res.end(); //Дальше обрабатывать не надо return { bStopPropagation: true }; } else { throw new ServerError(SERR_DB_SERVER, "Нет подключения к БД"); } } else { throw new ServerError(SERR_APP_SERVER_BEFORE, "Запрос к серверу сформирован некорректно"); } }; //----------------- // Интерфейс модуля //----------------- exports.before = before;