21 lines
647 B
TypeScript
21 lines
647 B
TypeScript
import { z } from 'zod';
|
|
|
|
import { queryFilterSchema } from './query-parser.schemas.js';
|
|
import { queryParser } from './query-parser.js';
|
|
|
|
const queryStringSchema: typeof queryFilterSchema = z
|
|
.codec(z.string(), queryFilterSchema, {
|
|
encode: (filter) => {
|
|
return queryParser.stringify(filter);
|
|
},
|
|
decode: (input) => {
|
|
return queryParser.parse(input);
|
|
},
|
|
// eslint-disable-next-line
|
|
}).meta({ id: 'QueryString', examples: ["metadata.foo = 'bar'"] }) as any;
|
|
|
|
// eslint-disable-next-line
|
|
const querySchema: typeof queryFilterSchema = z.union([queryStringSchema, queryFilterSchema]) as any
|
|
|
|
export { querySchema };
|