update user mutation
This commit is contained in:
@@ -31,7 +31,7 @@ export class CenterSchema extends PothosSchema {
|
|||||||
updatedAt: t.expose('updatedAt', { type: 'DateTime' }),
|
updatedAt: t.expose('updatedAt', { type: 'DateTime' }),
|
||||||
services: t.relation('services'),
|
services: t.relation('services'),
|
||||||
centerOwner: t.relation('centerOwner'),
|
centerOwner: t.relation('centerOwner'),
|
||||||
// chatRoom: t.relation('chatRoom'),
|
chatRoom: t.relation('chatRoom'),
|
||||||
centerStaff: t.relation('CenterStaff'),
|
centerStaff: t.relation('CenterStaff'),
|
||||||
resume: t.relation('Resume'),
|
resume: t.relation('Resume'),
|
||||||
}),
|
}),
|
||||||
@@ -43,15 +43,43 @@ export class CenterSchema extends PothosSchema {
|
|||||||
this.builder.queryFields((t) => ({
|
this.builder.queryFields((t) => ({
|
||||||
centers: t.prismaField({
|
centers: t.prismaField({
|
||||||
type: [this.center()],
|
type: [this.center()],
|
||||||
|
args: this.builder.generator.findManyArgs('Center'),
|
||||||
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
|
return await this.prisma.center.findMany({
|
||||||
|
...query,
|
||||||
|
skip: args.skip ?? undefined,
|
||||||
|
take: args.take ?? 10,
|
||||||
|
orderBy: args.orderBy ?? undefined,
|
||||||
|
where: args.filter ?? undefined,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
center: t.prismaField({
|
||||||
|
type: this.center(),
|
||||||
|
args: this.builder.generator.findUniqueArgs('Center'),
|
||||||
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
|
return await this.prisma.center.findUnique({
|
||||||
|
...query,
|
||||||
|
where: args.where,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
|
// mutation section
|
||||||
|
this.builder.mutationFields((t) => ({
|
||||||
|
createCenter: t.prismaField({
|
||||||
|
type: this.center(),
|
||||||
args: {
|
args: {
|
||||||
skip: t.arg.int(),
|
input: t.arg({
|
||||||
take: t.arg.int(),
|
type: this.builder.generator.getCreateInput('Center'),
|
||||||
|
required: true,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
resolve: async (query, root, args, ctx, info) => {
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
const { skip, take } = args;
|
return await this.prisma.center.create({
|
||||||
return await this.prisma.center.findMany({
|
...query,
|
||||||
skip: skip ?? 0,
|
data: args.input,
|
||||||
take: take ?? 10,
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -31,4 +31,23 @@ export class CenterStaffSchema extends PothosSchema {
|
|||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Pothos()
|
||||||
|
init(): void {
|
||||||
|
this.builder.queryFields((t) => ({
|
||||||
|
centerStaff: t.prismaField({
|
||||||
|
type: [this.centerStaff()],
|
||||||
|
args: this.builder.generator.findManyArgs('CenterStaff'),
|
||||||
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
|
return await this.prisma.centerStaff.findMany({
|
||||||
|
...query,
|
||||||
|
skip: args.skip ?? undefined,
|
||||||
|
take: args.take ?? 10,
|
||||||
|
orderBy: args.orderBy ?? undefined,
|
||||||
|
where: args.filter ?? undefined,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export class Builder extends SchemaBuilder<SchemaBuilderOption> {
|
|||||||
this.addScalarType('DateTime', DateTimeResolver);
|
this.addScalarType('DateTime', DateTimeResolver);
|
||||||
this.addScalarType('Json', JSONResolver);
|
this.addScalarType('Json', JSONResolver);
|
||||||
this.queryType({});
|
this.queryType({});
|
||||||
// this.mutationType({});
|
this.mutationType({});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export type BuilderTypes =
|
export type BuilderTypes =
|
||||||
|
|||||||
@@ -75,6 +75,14 @@ export class PrismaCrudGenerator<Types extends SchemaTypes> {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
findUniqueArgs<Name extends string & keyof Types['PrismaTypes']>(
|
||||||
|
modelName: Name,
|
||||||
|
) {
|
||||||
|
return this.builder.args((t) => ({
|
||||||
|
where: t.field({ type: this.getWhereUnique(modelName), required: true }),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
getWhere<Name extends string & keyof Types['PrismaTypes']>(
|
getWhere<Name extends string & keyof Types['PrismaTypes']>(
|
||||||
modelName: Name,
|
modelName: Name,
|
||||||
without?: string[],
|
without?: string[],
|
||||||
|
|||||||
@@ -39,14 +39,32 @@ export class ResumeSchema extends PothosSchema {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Pothos()
|
@Pothos()
|
||||||
init() {
|
init(): void {
|
||||||
this.builder.queryField('resumes', (t) =>
|
this.builder.queryFields((t) => ({
|
||||||
t.field({
|
resumes: t.prismaField({
|
||||||
type: [this.resume()],
|
type: [this.resume()],
|
||||||
resolve: async () => {
|
args: this.builder.generator.findManyArgs('Resume'),
|
||||||
return await this.prisma.resume.findMany();
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
|
return await this.prisma.resume.findMany({
|
||||||
|
...query,
|
||||||
|
skip: args.skip ?? undefined,
|
||||||
|
take: args.take ?? 10,
|
||||||
|
orderBy: args.orderBy ?? undefined,
|
||||||
|
where: args.filter ?? undefined,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
|
||||||
|
resume: t.prismaField({
|
||||||
|
type: this.resume(),
|
||||||
|
args: this.builder.generator.findUniqueArgs('Resume'),
|
||||||
|
resolve: async (query, root, args, ctx, info) => {
|
||||||
|
return await this.prisma.resume.findUnique({
|
||||||
|
...query,
|
||||||
|
where: args.where,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,9 @@
|
|||||||
import { Global, Module } from '@nestjs/common';
|
import { Global, Module } from '@nestjs/common';
|
||||||
import { UserSchema } from './user.schema';
|
import { UserSchema } from './user.schema';
|
||||||
import { Builder, BuilderTypes } from '../graphql/graphql.builder';
|
|
||||||
import { PrismaCrudGenerator } from 'src/graphql/graphql.generator';
|
|
||||||
import { PrismaService } from 'src/prisma/prisma.service';
|
import { PrismaService } from 'src/prisma/prisma.service';
|
||||||
@Global()
|
@Global()
|
||||||
@Module({
|
@Module({
|
||||||
providers: [
|
providers: [PrismaService, UserSchema],
|
||||||
PrismaService,
|
|
||||||
UserSchema,
|
|
||||||
{
|
|
||||||
provide: Builder,
|
|
||||||
useFactory: (prisma: PrismaService) => new Builder(prisma),
|
|
||||||
inject: [PrismaService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provide: PrismaCrudGenerator,
|
|
||||||
inject: [
|
|
||||||
{
|
|
||||||
token: Builder,
|
|
||||||
optional: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
useFactory: (builder: Builder) =>
|
|
||||||
new PrismaCrudGenerator<BuilderTypes>(builder),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
exports: [UserSchema],
|
exports: [UserSchema],
|
||||||
})
|
})
|
||||||
export class UserModule {}
|
export class UserModule {}
|
||||||
|
|||||||
Reference in New Issue
Block a user