@clipboard-health/json-api-nestjs
Advanced tools
Comparing version 0.4.0 to 0.4.1
{ | ||
"name": "@clipboard-health/json-api-nestjs", | ||
"description": "Utilities for adhering to the JSON:API specification with NestJS.", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"dependencies": { | ||
@@ -6,0 +6,0 @@ "tslib": "2.7.0", |
@@ -32,2 +32,3 @@ # @clipboard-health/json-api-nestjs <!-- omit from toc --> | ||
fieldsQuery, | ||
type FilterMap, | ||
filterQuery, | ||
@@ -47,6 +48,20 @@ includeQuery, | ||
const userFields = ["age", "dateOfBirth"] as const satisfies readonly UserAttributeFields[]; | ||
const includeFields = [ | ||
const userIncludeFields = [ | ||
"articles", | ||
"articles.comments", | ||
] as const satisfies readonly UserIncludeFields[]; | ||
const userFilterMap = { | ||
age: { | ||
filters: ["eq", "gt"], | ||
schema: z.coerce.number().int().positive().max(125), | ||
}, | ||
isActive: { | ||
filters: ["eq"], | ||
schema: booleanString, | ||
}, | ||
dateOfBirth: { | ||
filters: ["gte"], | ||
schema: z.coerce.date().min(new Date("1900-01-01")).max(new Date()), | ||
}, | ||
} as const satisfies FilterMap<UserAttributeFields>; | ||
@@ -65,18 +80,5 @@ /** | ||
...fieldsQuery({ user: userFields, article: articleFields }), | ||
...filterQuery({ | ||
age: { | ||
filters: ["eq", "gt"], | ||
schema: z.coerce.number().int().positive().max(125), | ||
}, | ||
isActive: { | ||
filters: ["eq"], | ||
schema: booleanString, | ||
}, | ||
dateOfBirth: { | ||
filters: ["gte"], | ||
schema: z.coerce.date().min(new Date("1900-01-01")).max(new Date()), | ||
}, | ||
}), | ||
...filterQuery(userFilterMap), | ||
...sortQuery(userFields), | ||
...includeQuery(includeFields), | ||
...includeQuery(userIncludeFields), | ||
}) | ||
@@ -83,0 +85,0 @@ .strict(); |
import { z } from "zod"; | ||
import { type ApiType } from "../types"; | ||
import { type Field } from "../types"; | ||
export type Filter = "eq" | "ne" | "gt" | "gte" | "lt" | "lte"; | ||
export type FilterMap = Record<ApiType, { | ||
export type FilterMap<FieldT extends Field = Field> = Record<FieldT, { | ||
filters: readonly [Filter, ...Filter[]]; | ||
@@ -6,0 +6,0 @@ schema: z.ZodTypeAny; |
30030
89