feat: prisma typed select (#347)

* feat: wip prisma gql select

* feat: stronger api using decorator

* feat: add PrismaSelect everywhere

* fix: remove unused

* fix: remove seed debug
This commit is contained in:
Jérémy M
2023-06-22 11:17:31 +02:00
committed by GitHub
parent eb9be6894e
commit ca283a2196
35 changed files with 1081 additions and 578 deletions

View File

@ -0,0 +1,26 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { GqlExecutionContext } from '@nestjs/graphql';
import {
PrismaSelect,
ModelSelectMap,
DefaultFieldsMap,
} from 'src/utils/prisma-select';
export { PrismaSelect };
export const PrismaSelector = createParamDecorator(
(
data: {
modelName: keyof ModelSelectMap;
defaultFields?: DefaultFieldsMap;
},
ctx: ExecutionContext,
): PrismaSelect<keyof ModelSelectMap> => {
const gqlCtx = GqlExecutionContext.create(ctx);
const info = gqlCtx.getInfo();
return new PrismaSelect(data.modelName, info, {
defaultFields: data.defaultFields,
});
},
);