🔥🔥🔥🔥🔥🔥
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,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,7 +38,7 @@ export class OrderSchema extends PothosSchema {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@PothosRef()
|
@Pothos()
|
||||||
init(): void {
|
init(): void {
|
||||||
// query section
|
// query section
|
||||||
this.builder.queryFields((t) => ({
|
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', {
|
return this.builder.prismaObject('ChatRoom', {
|
||||||
fields: (t) => ({
|
fields: (t) => ({
|
||||||
id: t.exposeID('id'),
|
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 { Request, Response } from 'express';
|
||||||
import type PrismaTypes from '../types/pothos.generated';
|
import type PrismaTypes from '../types/pothos.generated';
|
||||||
import { getDatamodel } 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 { Injectable } from '@nestjs/common';
|
||||||
import { PrismaCrudGenerator } from './graphql.generator';
|
import { PrismaCrudGenerator } from './graphql.generator';
|
||||||
|
|
||||||
@@ -50,7 +50,8 @@ export class Builder extends SchemaBuilder<SchemaBuilderOption> {
|
|||||||
});
|
});
|
||||||
this.generator = new PrismaCrudGenerator<BuilderTypes>(this);
|
this.generator = new PrismaCrudGenerator<BuilderTypes>(this);
|
||||||
this.addScalarType('DateTime', DateTimeResolver);
|
this.addScalarType('DateTime', DateTimeResolver);
|
||||||
this.addScalarType('Json', JSONResolver);
|
this.addScalarType('Json', JSONObjectResolver);
|
||||||
|
|
||||||
this.queryType({});
|
this.queryType({});
|
||||||
this.mutationType({});
|
this.mutationType({});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ import { RefundTicketModule } from '../RefundTicket/refundticket.module';
|
|||||||
import { ServiceAndCategoryModule } from '../ServiceAndCategory/serviceandcategory.module';
|
import { ServiceAndCategoryModule } from '../ServiceAndCategory/serviceandcategory.module';
|
||||||
import { CategoryModule } from '../Category/category.module';
|
import { CategoryModule } from '../Category/category.module';
|
||||||
import { ServiceFeedbackModule } from '../ServiceFeedback/servicefeedback.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()
|
@Global()
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -42,6 +46,10 @@ import { ServiceFeedbackModule } from '../ServiceFeedback/servicefeedback.module
|
|||||||
ServiceAndCategoryModule,
|
ServiceAndCategoryModule,
|
||||||
CategoryModule,
|
CategoryModule,
|
||||||
ServiceFeedbackModule,
|
ServiceFeedbackModule,
|
||||||
|
MilestoneModule,
|
||||||
|
ScheduleModule,
|
||||||
|
MessageModule,
|
||||||
|
ServiceMeetingRoomModule,
|
||||||
PothosModule.forRoot({
|
PothosModule.forRoot({
|
||||||
builder: {
|
builder: {
|
||||||
inject: [PrismaService],
|
inject: [PrismaService],
|
||||||
|
|||||||
Reference in New Issue
Block a user