Skip to content

Commit 1b5b5a1

Browse files
authored
fix: find input args validation (#178)
1 parent f2199db commit 1b5b5a1

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

packages/runtime/src/client/crud/operations/base.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ export type CrudOperation =
6868
| 'aggregate'
6969
| 'groupBy';
7070

71+
export type AllCrudOperation = CrudOperation | 'findUniqueOrThrow' | 'findFirstOrThrow';
72+
7173
export type FromRelationContext<Schema extends SchemaDef> = {
7274
model: GetModels<Schema>;
7375
field: string;

packages/runtime/src/client/crud/validator.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class InputValidator<Schema extends SchemaDef> {
4444
return this.validate<FindArgs<Schema, GetModels<Schema>, true>, Parameters<typeof this.makeFindSchema>[1]>(
4545
model,
4646
'find',
47-
{ unique, collection: true },
47+
{ unique },
4848
(model, options) => this.makeFindSchema(model, options),
4949
args,
5050
);
@@ -196,7 +196,7 @@ export class InputValidator<Schema extends SchemaDef> {
196196

197197
// #region Find
198198

199-
private makeFindSchema(model: string, options: { unique: boolean; collection: boolean }) {
199+
private makeFindSchema(model: string, options: { unique: boolean }) {
200200
const fields: Record<string, z.ZodSchema> = {};
201201
const where = this.makeWhereSchema(model, options.unique);
202202
if (options.unique) {
@@ -208,13 +208,13 @@ export class InputValidator<Schema extends SchemaDef> {
208208
fields['select'] = this.makeSelectSchema(model).optional();
209209
fields['include'] = this.makeIncludeSchema(model).optional();
210210
fields['omit'] = this.makeOmitSchema(model).optional();
211-
fields['distinct'] = this.makeDistinctSchema(model).optional();
212-
fields['cursor'] = this.makeCursorSchema(model).optional();
213211

214-
if (options.collection) {
212+
if (!options.unique) {
215213
fields['skip'] = this.makeSkipSchema().optional();
216214
fields['take'] = this.makeTakeSchema().optional();
217215
fields['orderBy'] = this.orArray(this.makeOrderBySchema(model, true, false), true).optional();
216+
fields['cursor'] = this.makeCursorSchema(model).optional();
217+
fields['distinct'] = this.makeDistinctSchema(model).optional();
218218
}
219219

220220
let result: ZodType = z.strictObject(fields);

packages/runtime/src/client/plugin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { OperationNode, QueryResult, RootOperationNode, UnknownRow } from '
22
import type { ClientContract, ToKysely } from '.';
33
import type { GetModels, SchemaDef } from '../schema';
44
import type { MaybePromise } from '../utils/type-utils';
5-
import type { CrudOperation } from './crud/operations/base';
5+
import type { AllCrudOperation } from './crud/operations/base';
66

77
/**
88
* ZenStack runtime plugin.
@@ -61,7 +61,7 @@ type OnQueryHookContext<Schema extends SchemaDef> = {
6161
/**
6262
* The operation that is being performed.
6363
*/
64-
operation: CrudOperation;
64+
operation: AllCrudOperation;
6565

6666
/**
6767
* The query arguments.

0 commit comments

Comments
 (0)