Это старая версия документа!
Название функции | Назначение |
---|---|
getCalibrationNameAndSerial(calibrationData) | функция возвращает имена приборов и их серийные номера, в случае, если для них есть калибровочные коэффициенты |
readAndParseCalibrationFile(file) | асинхронная функция предназначена для чтения и парсинга JSON-файла с данными о калибровке. |
getCalibrationSensorNames(calibrationData) | функция возвращает массив с названиями сенсоров для калибровки |
getAllRedisKeys() | асинхронная функция для получения всех ключей из Redis |
getNecessaryKeys(startDate, endDate, keysArray) | функция выполняет фильтрацию массива ключей (keysArray) на основе заданного временного диапазона |
checkDateRangeInRedis(formattedStartDate, formattedEndDate, keysArray) | функция проверяет, находится ли заданный временной диапазон внутри или частично пересекается с временным диапазоном, представленным в массиве keysArray |
sortRedisKeys(keysArray) | функция для сортировки массива ключей Redis |
sortedAndFilteredKeys(formattedStartDate, formattedEndDate) | асинхронная функция для получения отсортированных и отфильтрованных ключей из Redis |
updateDataInRedis(url) | асинхронная функция для добавления данных в Redis |
processAndAggregateLastMeasurements(respondParsed, keysArray) | функция для обработки данных (для запросов last_measurements) |
processAndAggregateResponsesList(respondParsed, keysArray) | функция для обработки данных (для запросов list) |
downloadPage(url) | асинхронная функция выполняет запрос по указанному URL и возвращает ответ |
requestAdditionalDataIfMissing(formattedStartDate, formattedEndDate, filteredKeys) | асинхронная функция для дозапроса данных |
respondToDataQuery(keys) | функция предназначена для получения значений по заданным ключам |
respondToDataQueryParsed(keys) | функция предназначена для получения значений по заданным ключам |
applyCalibrationsToData(calibrationData, filteredResponse) | функция выполняет калибровку данных |
Загружаем данные из внешнего источника
const databaseResponse = await downloadPage(url); const keys = Object.keys(databaseResponse);
Объявляем конвейеры
const existsPipeline = redis.pipeline(); const updatePipeline = redis.pipeline();
Добавляем в конвейер команду проверки на существования в Redis для каждого ключа
for (const key of keys) { const currentDate = databaseResponse[key].Date; existsPipeline.exists(currentDate); }
Запускаем конвейер и ждём результат
const existsResults = await existsPipeline.exec();
Добавляем данные для отсутствующих ключей
for (let i = 0; i < keys.length; i++) { const key = keys[i]; const currentDate = databaseResponse[key].Date; const keyExistsInRedis = existsResults[i][1] === 1; if (!keyExistsInRedis) { const newDataArray = JSON.stringify(databaseResponse[key]); updatePipeline.set(currentDate, newDataArray, 'EX', REDIS_EXPIRY_SECONDS); } }
Запускаем конвейер и ждём результат
await updatePipeline.exec();