/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
apps/api/src/app/inbox/utils/validate-data.ts
43 строки
1 KB
Dima Grossman
feat(shared): OR/AND filtering for `data` in inbox useNotifications fixes NV-7666 (#11135)
21 май 2026, 19:03
Не верифицирован
21 май 2026, 19:03
0d364fe
Код
Авторство
О чём код?
import { BadRequestException } from '@nestjs/common'; import { buildDataFilterQuery, type DataFilterMongoFragment, DataFilterValidationError, normalizeDataFilter, } from '@novu/shared'; /** * Validate a parsed `data` filter object against the shape supported by the * inbox API. Accepts scalars, `Scalar[]` (OR), `{ or: Scalar[] }` and * `{ and: [{ or: Scalar[] }, ...] }` (CNF) per top-level key, plus 1 level of * nested objects. * * Throws `BadRequestException` (so the existing API error contract is * preserved) if the structure is invalid. */ export function validateDataStructure(data: unknown): void { try { normalizeDataFilter(data); } catch (error) { if (error instanceof DataFilterValidationError) { throw new BadRequestException(error.message); } throw error; } } /** * Build the MongoDB filter fragment for a parsed `data` filter. Wraps * `buildDataFilterQuery` with a `BadRequestException` translation so it can be * used from inside use-cases that already validate via `validateDataStructure`. */ export function buildInboxDataFilterQuery(data: unknown): DataFilterMongoFragment { try { return buildDataFilterQuery(data); } catch (error) { if (error instanceof DataFilterValidationError) { throw new BadRequestException(error.message); } throw error; } }