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:
26
server/src/decorators/prisma-select.decorator.ts
Normal file
26
server/src/decorators/prisma-select.decorator.ts
Normal 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,
|
||||
});
|
||||
},
|
||||
);
|
||||
Reference in New Issue
Block a user