feat: improved zod handling
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
export * from './query-parser.schemas.js';
|
||||
export { QueryParser } from './query-parser.js';
|
||||
export { QueryParser, queryParser } from './query-parser.js';
|
||||
export * from './utils.filter.js';
|
||||
export * from './query-parser.codec.js';
|
||||
|
||||
20
packages/query-dsl/src/query-parser.codec.ts
Normal file
20
packages/query-dsl/src/query-parser.codec.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
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 };
|
||||
@@ -19,4 +19,6 @@ class QueryParser {
|
||||
};
|
||||
}
|
||||
|
||||
export { QueryParser };
|
||||
const queryParser = new QueryParser();
|
||||
|
||||
export { QueryParser, queryParser };
|
||||
|
||||
Reference in New Issue
Block a user