Skip to content

Commit

Permalink
fix(client): missing relations for includes in client extensions (#17347
Browse files Browse the repository at this point in the history
)
  • Loading branch information
millsp committed Jan 16, 2023
1 parent cf664d2 commit 7bdb2b8
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
8 changes: 7 additions & 1 deletion packages/client/src/generation/TSClient/Model.ts
Expand Up @@ -12,6 +12,7 @@ import {
getAggregateGetName,
getAggregateInputType,
getAggregateName,
getArgName,
getAvgAggregateName,
getCountAggregateInputName,
getCountAggregateOutputName,
Expand Down Expand Up @@ -358,7 +359,12 @@ ${ifExtensions(() => {
})
}, '')}
${includeType}
${ifExtensions('', new PayloadType(this.outputType, this.dmmf).toTS())}
${ifExtensions(
`type ${model.name}GetPayload<S extends boolean | null | undefined | ${getArgName(
model.name,
)}> = runtime.Types.GetFindResult<${model.name}Payload, S>`,
new PayloadType(this.outputType, this.dmmf).toTS(),
)}
${new ModelDelegate(this.outputType, this.dmmf, this.generator).toTS()}
Expand Down
22 changes: 11 additions & 11 deletions packages/client/src/runtime/core/types/GetResult.ts
Expand Up @@ -29,24 +29,24 @@ export type Operation =

type Count<O> = { [K in keyof O]: Count<number> } & {}

type GetFindResult<P extends Payload, A> =
export type GetFindResult<P extends Payload, A> =
A extends { select: infer S } | { include: infer S }
? {
[K in keyof S as S[K] extends false | undefined | null ? never : K]:
S[K] extends true
? P extends { objects: { [k in K]: (infer O extends Payload)[] } }
? O['scalars'][]
: P extends { objects: { [k in K]: (infer O extends Payload) | null } }
? O['scalars'] | P['objects'][K] & null
? P extends { objects: { [k in K]: (infer O)[] } }
? O extends Payload ? O['scalars'][] : never
: P extends { objects: { [k in K]: (infer O) | null } }
? O extends Payload ? O['scalars'] | P['objects'][K] & null : never
: P extends { scalars: { [k in K]: infer O } }
? O
: K extends '_count'
? Count<P['objects']>
: never
: P extends { objects: { [k in K]: (infer O extends Payload)[] } }
? GetFindResult<O, S[K]>[]
: P extends { objects: { [k in K]: (infer O extends Payload) | null } }
? GetFindResult<O, S[K]> | P['objects'][K] & null
: P extends { objects: { [k in K]: (infer O)[] } }
? O extends Payload ? GetFindResult<O, S[K]>[] : never
: P extends { objects: { [k in K]: (infer O) | null } }
? O extends Payload ? GetFindResult<O, S[K]> | P['objects'][K] & null : never
: K extends '_count'
? Count<GetFindResult<P, S[K]>>
: never
Expand Down Expand Up @@ -93,6 +93,6 @@ export type GetResult<P extends Payload, A, O extends Operation> = {
delete: GetFindResult<P, A>,
deleteMany: GetBatchResult<P, A>,
aggregate: GetAggregateResult<P, A>,
count: GetCountResult<P, A>
groupBy: GetGroupByResult<P, A>
count: GetCountResult<P, A>,
groupBy: GetGroupByResult<P, A>,
}[O]
3 changes: 2 additions & 1 deletion packages/client/src/runtime/core/types/index.ts
@@ -1,5 +1,5 @@
import * as Extensions from './Extensions'
import { GetResult } from './GetResult'
import { GetFindResult, GetResult } from './GetResult'
import { Payload } from './Payload'
import * as Public from './Public'
import * as Utils from './Utils'
Expand All @@ -8,4 +8,5 @@ export { Extensions }
export { Utils }
export { Public }
export { type GetResult }
export { type GetFindResult }
export { type Payload }

0 comments on commit 7bdb2b8

Please sign in to comment.