Убран лишний код. Скорректированы docker и package файлы. Переработано взаимодействие с бд - упрощена логика. #1
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@@ -15,2 +10,2 @@HISTORY_TARGET_POINTS: ${HISTORY_TARGET_POINTS:-2000}HISTORY_MAX_TARGET_POINTS: ${HISTORY_MAX_TARGET_POINTS:-5000}CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS}INGEST_API_KEY: ${INGEST_API_KEY}Не нужно специально ограничивать размер пакета присылаемых данных
@@ -8,3 +8,2 @@"build": "nest build","start": "nest start","start:dev": "nest start --watch","start": "node --env-file=.env ./node_modules/@nestjs/cli/bin/nest.js start",вот это
./node_modules/@nestjs/cli/bin/nest.js- неправильноу тебя во фреймворке nest уже подключен
он всё делает: ConfigModule.forRoot({ isGlobal: true }),
считывает .env,
ему же можно добавить всю необходимую валидацию значений переменных окружения,
так что оставь строки
в покое
@@ -9,2 +9,2 @@"start": "nest start","start:dev": "nest start --watch","start": "node --env-file=.env ./node_modules/@nestjs/cli/bin/nest.js start","start:dev": "node --env-file=.env ./node_modules/@nestjs/cli/bin/nest.js start --watch",а
понял
здесь ты как раз убрал сервис чтения и валидации переменных окружения
import { ConfigModule } from '@nestjs/config';ну ок
тогда
то есть к типовым
добавляется
--exec "node --env-file=.env":это ок
@@ -89,10 +81,7 @@ export class IngestService {/** Защищает API от слишком больших ingest-запросов, занимающих соединение с БД надолго. */private assertBatchSize(size: number): void {это не надо такое зачем
@@ -103,4 +92,2 @@private normalizePoint(point: IngestPointDto): NormalizedPoint {const edge = normalizeRequiredText(point.edge, 'edge');const tag = normalizeRequiredText(point.tag, 'tag');const time = this.parsePointTime(point);это избыточная валидация,
давай считать, что мы в mqtt-ingest всё делаем хорошо (передаём время нормально сразу)
а если мы делаем там не хорошо - то это достойно возникновения исключения
@@ -140,0 +35,4 @@AND timestamp < $4) AS bucketedGROUP BY bucketORDER BY bucket ASCне понимаю, почему запрос сложнее, чем обговоренный и проверенный
в чем практическая польза этого усложнения?
@@ -16,3 +11,3 @@};/** Превращает плоские строки истории в стабильный API-формат для графиков. *//** Переводит строки агрегированной истории в формат графика min/avg/max. */за время работы по улучшению кода случилось прекрасное:
строки агрегированной истории ТЕПЕРЬ СОВПАДАЮТ с форматом графика min/avg/max.
То есть теперь их можно отдавать на фронтенд практически в том же виде, в котором они были выбраны из базы без какой-либо нормализации.
@@ -7,4 +4,2 @@const DEFAULT_MAX_BATCH_SIZE = 10_000;type NormalizedPoint = {за время работы по улучшению кода случилось прекрасное:
строки входящих данных (timestamp, edge, tag, value) ТЕПЕРЬ СОВПАДАЮТ с форматом таблиц базы данных.
То есть теперь их можно отдавать на сохранять практически в том же виде, в котором они пришли в контроллер без какой-либо нормализации.
@@ -56,4 +22,4 @@await this.db.query(`INSERT INTO current (edge, tag, value, "createdAt", "updatedAt")так как у createdAt на уровне БД установлено автоприсвоение NOW, то достаточно
(только проверь)