🔥🔥🔥🔥🔥🔥
This commit is contained in:
8
src/Message/message.module.ts
Normal file
8
src/Message/message.module.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { MessageSchema } from './message.schema';
|
||||
|
||||
@Module({
|
||||
providers: [MessageSchema],
|
||||
exports: [MessageSchema],
|
||||
})
|
||||
export class MessageModule {}
|
||||
63
src/Message/message.schema.ts
Normal file
63
src/Message/message.schema.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import {
|
||||
Pothos,
|
||||
PothosRef,
|
||||
PothosSchema,
|
||||
SchemaBuilderToken,
|
||||
} from '@smatch-corp/nestjs-pothos';
|
||||
import { Builder } from '../Graphql/graphql.builder';
|
||||
import { PrismaService } from '../Prisma/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class MessageSchema extends PothosSchema {
|
||||
constructor(
|
||||
@Inject(SchemaBuilderToken) private readonly builder: Builder,
|
||||
private readonly prisma: PrismaService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
@PothosRef()
|
||||
message() {
|
||||
return this.builder.prismaObject('Message', {
|
||||
fields: (t) => ({
|
||||
id: t.exposeID('id'),
|
||||
senderId: t.exposeID('senderId'),
|
||||
chatRoomId: t.exposeID('chatRoomId'),
|
||||
message: t.expose('message', { type: 'Json' as any }),
|
||||
sentAt: t.expose('sentAt', { type: 'DateTime' }),
|
||||
sender: t.relation('sender'),
|
||||
chatRoom: t.relation('chatRoom'),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
message: t.prismaField({
|
||||
type: this.message(),
|
||||
args: this.builder.generator.findUniqueArgs('Message'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.message.findUnique({
|
||||
...query,
|
||||
where: args.where,
|
||||
});
|
||||
},
|
||||
}),
|
||||
messages: t.prismaField({
|
||||
type: [this.message()],
|
||||
args: this.builder.generator.findManyArgs('Message'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.message.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
9
src/Milestone/milestone.module.ts
Normal file
9
src/Milestone/milestone.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Global, Module } from '@nestjs/common';
|
||||
import { MilestoneSchema } from './milestone.schema';
|
||||
|
||||
@Global()
|
||||
@Module({
|
||||
providers: [MilestoneSchema],
|
||||
exports: [MilestoneSchema],
|
||||
})
|
||||
export class MilestoneModule {}
|
||||
63
src/Milestone/milestone.schema.ts
Normal file
63
src/Milestone/milestone.schema.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import {
|
||||
Pothos,
|
||||
PothosRef,
|
||||
PothosSchema,
|
||||
SchemaBuilderToken,
|
||||
} from '@smatch-corp/nestjs-pothos';
|
||||
import { Builder } from '../Graphql/graphql.builder';
|
||||
import { PrismaService } from '../Prisma/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class MilestoneSchema extends PothosSchema {
|
||||
constructor(
|
||||
@Inject(SchemaBuilderToken) private readonly builder: Builder,
|
||||
private readonly prisma: PrismaService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
@PothosRef()
|
||||
milestone() {
|
||||
return this.builder.prismaObject('Milestone', {
|
||||
fields: (t) => ({
|
||||
id: t.exposeID('id'),
|
||||
name: t.exposeString('name'),
|
||||
order: t.exposeInt('order'),
|
||||
description: t.exposeString('description'),
|
||||
createdAt: t.expose('createdAt', { type: 'DateTime' }),
|
||||
updatedAt: t.expose('updatedAt', { type: 'DateTime' }),
|
||||
service: t.relation('service'),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
milestones: t.prismaField({
|
||||
type: [this.milestone()],
|
||||
args: this.builder.generator.findManyArgs('Milestone'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.milestone.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
milestone: t.prismaField({
|
||||
type: this.milestone(),
|
||||
args: this.builder.generator.findUniqueArgs('Milestone'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.milestone.findUnique({
|
||||
...query,
|
||||
where: args.where,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -37,8 +37,8 @@ export class OrderSchema extends PothosSchema {
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@PothosRef()
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
// query section
|
||||
this.builder.queryFields((t) => ({
|
||||
|
||||
9
src/Schedule/schedule.module.ts
Normal file
9
src/Schedule/schedule.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Global, Module } from '@nestjs/common';
|
||||
import { ScheduleSchema } from './schedule.schema';
|
||||
|
||||
@Global()
|
||||
@Module({
|
||||
providers: [ScheduleSchema],
|
||||
exports: [ScheduleSchema],
|
||||
})
|
||||
export class ScheduleModule {}
|
||||
62
src/Schedule/schedule.schema.ts
Normal file
62
src/Schedule/schedule.schema.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import {
|
||||
Pothos,
|
||||
PothosRef,
|
||||
PothosSchema,
|
||||
SchemaBuilderToken,
|
||||
} from '@smatch-corp/nestjs-pothos';
|
||||
import { Builder } from '../Graphql/graphql.builder';
|
||||
import { PrismaService } from '../Prisma/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class ScheduleSchema extends PothosSchema {
|
||||
constructor(
|
||||
@Inject(SchemaBuilderToken) private readonly builder: Builder,
|
||||
private readonly prisma: PrismaService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
@PothosRef()
|
||||
schedule() {
|
||||
return this.builder.prismaObject('Schedule', {
|
||||
fields: (t) => ({
|
||||
id: t.exposeID('id'),
|
||||
serviceId: t.exposeID('serviceId'),
|
||||
service: t.relation('service'),
|
||||
dates: t.expose('dates', { type: 'Json' as any }),
|
||||
status: t.exposeString('status'),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
schedule: t.prismaField({
|
||||
type: this.schedule(),
|
||||
args: this.builder.generator.findUniqueArgs('Schedule'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.schedule.findUnique({
|
||||
...query,
|
||||
where: args.where,
|
||||
});
|
||||
},
|
||||
}),
|
||||
|
||||
schedules: t.prismaField({
|
||||
type: [this.schedule()],
|
||||
args: this.builder.generator.findManyArgs('Schedule'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.schedule.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -28,4 +28,23 @@ export class ServiceAndCategorySchema extends PothosSchema {
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
serviceAndCategories: t.prismaField({
|
||||
type: [this.serviceAndCategory()],
|
||||
args: this.builder.generator.findManyArgs('ServiceAndCategory'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.serviceAndCategory.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
9
src/ServiceMeetingRoom/servicemeetingroom.module.ts
Normal file
9
src/ServiceMeetingRoom/servicemeetingroom.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Global, Module } from '@nestjs/common';
|
||||
import { ServiceMeetingRoomSchema } from './servicemeetingroom.schema';
|
||||
|
||||
@Global()
|
||||
@Module({
|
||||
providers: [ServiceMeetingRoomSchema],
|
||||
exports: [ServiceMeetingRoomSchema],
|
||||
})
|
||||
export class ServiceMeetingRoomModule {}
|
||||
59
src/ServiceMeetingRoom/servicemeetingroom.schema.ts
Normal file
59
src/ServiceMeetingRoom/servicemeetingroom.schema.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import {
|
||||
Pothos,
|
||||
PothosRef,
|
||||
PothosSchema,
|
||||
SchemaBuilderToken,
|
||||
} from '@smatch-corp/nestjs-pothos';
|
||||
import { Builder } from '../Graphql/graphql.builder';
|
||||
import { PrismaService } from '../Prisma/prisma.service';
|
||||
|
||||
@Injectable()
|
||||
export class ServiceMeetingRoomSchema extends PothosSchema {
|
||||
constructor(
|
||||
@Inject(SchemaBuilderToken) private readonly builder: Builder,
|
||||
private readonly prisma: PrismaService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
@PothosRef()
|
||||
serviceMeetingRoom() {
|
||||
return this.builder.prismaObject('ServiceMeetingRoom', {
|
||||
fields: (t) => ({
|
||||
id: t.exposeID('id'),
|
||||
chattingRoomId: t.exposeString('chattingRoomId'),
|
||||
chattingRoom: t.relation('chattingRoom'),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
serviceMeetingRoom: t.prismaField({
|
||||
type: this.serviceMeetingRoom(),
|
||||
args: this.builder.generator.findUniqueArgs('ServiceMeetingRoom'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.serviceMeetingRoom.findUnique({
|
||||
...query,
|
||||
where: args.where,
|
||||
});
|
||||
},
|
||||
}),
|
||||
serviceMeetingRooms: t.prismaField({
|
||||
type: [this.serviceMeetingRoom()],
|
||||
args: this.builder.generator.findManyArgs('ServiceMeetingRoom'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.serviceMeetingRoom.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,47 @@ export class ChatroomSchema extends PothosSchema {
|
||||
return this.builder.prismaObject('ChatRoom', {
|
||||
fields: (t) => ({
|
||||
id: t.exposeID('id'),
|
||||
type: t.exposeString('type'),
|
||||
customerId: t.exposeID('customerId'),
|
||||
centerId: t.exposeID('centerId'),
|
||||
centerStaffId: t.exposeID('centerStaffId'),
|
||||
createdAt: t.expose('createdAt', { type: 'DateTime' }),
|
||||
message: t.relation('message'),
|
||||
customer: t.relation('customer'),
|
||||
center: t.relation('center'),
|
||||
centerStaff: t.relation('centerStaff'),
|
||||
meetingRoom: t.relation('meetingRoom'),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@Pothos()
|
||||
init(): void {
|
||||
this.builder.queryFields((t) => ({
|
||||
chatRoom: t.prismaField({
|
||||
type: this.chatRoom(),
|
||||
args: this.builder.generator.findUniqueArgs('ChatRoom'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.chatRoom.findUnique({
|
||||
...query,
|
||||
where: args.where,
|
||||
});
|
||||
},
|
||||
}),
|
||||
|
||||
chatRooms: t.prismaField({
|
||||
type: [this.chatRoom()],
|
||||
args: this.builder.generator.findManyArgs('ChatRoom'),
|
||||
resolve: async (query, root, args, ctx, info) => {
|
||||
return await this.prisma.chatRoom.findMany({
|
||||
...query,
|
||||
skip: args.skip ?? 0,
|
||||
take: args.take ?? 10,
|
||||
orderBy: args.orderBy ?? undefined,
|
||||
where: args.filter ?? undefined,
|
||||
});
|
||||
},
|
||||
}),
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import PrismaUtils from '@pothos/plugin-prisma-utils';
|
||||
import { Request, Response } from 'express';
|
||||
import type PrismaTypes from '../types/pothos.generated';
|
||||
import { getDatamodel } from '../types/pothos.generated';
|
||||
import { DateTimeResolver, JSONResolver } from 'graphql-scalars';
|
||||
import { DateTimeResolver, JSONObjectResolver } from 'graphql-scalars';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaCrudGenerator } from './graphql.generator';
|
||||
|
||||
@@ -50,7 +50,8 @@ export class Builder extends SchemaBuilder<SchemaBuilderOption> {
|
||||
});
|
||||
this.generator = new PrismaCrudGenerator<BuilderTypes>(this);
|
||||
this.addScalarType('DateTime', DateTimeResolver);
|
||||
this.addScalarType('Json', JSONResolver);
|
||||
this.addScalarType('Json', JSONObjectResolver);
|
||||
|
||||
this.queryType({});
|
||||
this.mutationType({});
|
||||
}
|
||||
|
||||
@@ -23,6 +23,10 @@ import { RefundTicketModule } from '../RefundTicket/refundticket.module';
|
||||
import { ServiceAndCategoryModule } from '../ServiceAndCategory/serviceandcategory.module';
|
||||
import { CategoryModule } from '../Category/category.module';
|
||||
import { ServiceFeedbackModule } from '../ServiceFeedback/servicefeedback.module';
|
||||
import { MilestoneModule } from '../Milestone/milestone.module';
|
||||
import { ScheduleModule } from '../Schedule/schedule.module';
|
||||
import { MessageModule } from '../Message/message.module';
|
||||
import { ServiceMeetingRoomModule } from '../ServiceMeetingRoom/servicemeetingroom.module';
|
||||
@Global()
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -42,6 +46,10 @@ import { ServiceFeedbackModule } from '../ServiceFeedback/servicefeedback.module
|
||||
ServiceAndCategoryModule,
|
||||
CategoryModule,
|
||||
ServiceFeedbackModule,
|
||||
MilestoneModule,
|
||||
ScheduleModule,
|
||||
MessageModule,
|
||||
ServiceMeetingRoomModule,
|
||||
PothosModule.forRoot({
|
||||
builder: {
|
||||
inject: [PrismaService],
|
||||
|
||||
Reference in New Issue
Block a user