diff --git a/Dockerfile b/Dockerfile index b3db23e..4cdc2ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,9 @@ COPY --from=node_modules /app/node_modules ./node_modules # Expose the port EXPOSE 3000 + +# run migrations +RUN npm run prisma:migrate # generate prisma client RUN npm run prisma:generate diff --git a/package-lock.json b/package-lock.json index 7537ed5..baa8c7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,7 @@ "@types/node": "^20.3.1", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.0", + "@types/ws": "^8.5.12", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "9.11.1", @@ -65,7 +66,8 @@ "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.1.3", + "ws": "^8.18.0" } }, "node_modules/@ampproject/remapping": { @@ -4930,6 +4932,27 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "license": "0BSD" }, + "node_modules/@nestjs/graphql/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@nestjs/jwt": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz", @@ -14846,9 +14869,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 7037687..a2f8fd6 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,6 @@ "@pothos/plugin-prisma-utils": "^1.2.0", "@pothos/plugin-scope-auth": "^4.1.0", "@prisma/client": "^5.20.0", - "@smatch-corp/nestjs-pothos": "^0.3.0", - "@smatch-corp/nestjs-pothos-apollo-driver": "^0.1.0", "apollo-server-express": "^3.13.0", "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", @@ -64,6 +62,7 @@ "@types/node": "^20.3.1", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.0", + "@types/ws": "^8.5.12", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "9.11.1", @@ -78,7 +77,8 @@ "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.1.3", + "ws": "^8.18.0" }, "jest": { "moduleFileExtensions": [ diff --git a/src/graphql/graphql.builder.ts b/src/graphql/graphql.builder.ts index 86c88ba..ed64a4a 100644 --- a/src/graphql/graphql.builder.ts +++ b/src/graphql/graphql.builder.ts @@ -3,17 +3,17 @@ import PrismaPlugin from '@pothos/plugin-prisma'; import PrismaUtils from '@pothos/plugin-prisma-utils'; import { DateTimeResolver } from 'graphql-scalars'; import { PrismaService } from '../prisma/prisma.service'; -import type PrismaTypes from '@pothos/plugin-prisma/generated'; -import { getDatamodel } from '@pothos/plugin-prisma/generated'; +import type PrismaTypes from '../types/pothos.generated'; +import { getDatamodel } from '../types/pothos.generated'; -export const prisma = new PrismaService(); +export const prisma = new PrismaService({}); export const builder = new SchemaBuilder<{ - Scalars: { - DateTime: { - Input: Date; - Output: Date; + Scalars: { + DateTime: { + Input: Date; + Output: Date; + }; }; - }; PrismaTypes: PrismaTypes; }>({ plugins: [PrismaPlugin, PrismaUtils], diff --git a/src/graphql/schema.ts b/src/graphql/schema.ts index 6e2f100..7bde063 100644 --- a/src/graphql/schema.ts +++ b/src/graphql/schema.ts @@ -1,4 +1,5 @@ import { builder, prisma } from './graphql.builder'; +import type PrismaTypes from '@pothos/plugin-prisma/generated'; builder.prismaObject('User', { fields: (t) => ({ @@ -9,9 +10,11 @@ builder.prismaObject('User', { role: t.exposeString('role'), createdAt: t.expose('createdAt', { type: 'DateTime', + nullable: true, }), updatedAt: t.expose('updatedAt', { type: 'DateTime', + nullable: true, }), order: t.relation('orders'), serviceFeedbacks: t.relation('serviceFeedbacks'), @@ -114,4 +117,40 @@ builder.queryType({ }), }); +// // Mutation section +// builder.mutationType({ +// fields: (t) => ({ +// createUser: t.prismaField({ +// type: 'User', +// args: { +// data: t.arg({ +// type: 'PrismaTypes.UserCreateInput', +// }), +// }, +// resolve: (query, root, args, ctx, info) => { +// return prisma.user.create({ +// data: args.data, +// }); +// }, +// }), +// }), +// }); + +// // Subscription section +// builder.subscriptionType({ +// fields: (t) => ({ +// userCreated: t.prismaField({ +// type: 'User', +// subscribe: (query, root, args, ctx, info) => { +// return prisma.$subscribe.user({ +// mutation_in: ['CREATED'], +// }); +// }, +// resolve: (payload) => { +// return payload; +// }, +// }), +// }), +// }); + export const schema = builder.toSchema(); diff --git a/src/types/pothos.generated.ts b/src/types/pothos.generated.ts new file mode 100644 index 0000000..64dc568 --- /dev/null +++ b/src/types/pothos.generated.ts @@ -0,0 +1,595 @@ +/* eslint-disable */ +import type { Prisma, User, Center, CenterStaff, Service, ServiceAndCategory, Category, ServiceFeedback, Milestone, Schedule, ChatRoom, Message, Order, RefundTicket, Payment, Workshop, WorkshopSubscription, WorkshopOrganization, UploadedDocument, ServiceMeetingRoom, WorkshopMeetingRoom } from "@prisma/client"; +import type { PothosPrismaDatamodel } from "@pothos/plugin-prisma"; +export default interface PrismaTypes { + User: { + Name: "User"; + Shape: User; + Include: Prisma.UserInclude; + Select: Prisma.UserSelect; + OrderBy: Prisma.UserOrderByWithRelationInput; + WhereUnique: Prisma.UserWhereUniqueInput; + Where: Prisma.UserWhereInput; + Create: Prisma.UserCreateInput; + Update: Prisma.UserUpdateInput; + RelationName: "orders" | "serviceFeedbacks" | "documents" | "sendingMessage" | "Service" | "center" | "customerChatRoom" | "centerStaffChatRoom" | "CenterStaff" | "WorkshopSubscription"; + ListRelations: "orders" | "serviceFeedbacks" | "documents" | "sendingMessage" | "Service" | "customerChatRoom" | "centerStaffChatRoom" | "WorkshopSubscription"; + Relations: { + orders: { + Shape: Order[]; + Name: "Order"; + Nullable: false; + }; + serviceFeedbacks: { + Shape: ServiceFeedback[]; + Name: "ServiceFeedback"; + Nullable: false; + }; + documents: { + Shape: UploadedDocument[]; + Name: "UploadedDocument"; + Nullable: false; + }; + sendingMessage: { + Shape: Message[]; + Name: "Message"; + Nullable: false; + }; + Service: { + Shape: Service[]; + Name: "Service"; + Nullable: false; + }; + center: { + Shape: Center | null; + Name: "Center"; + Nullable: true; + }; + customerChatRoom: { + Shape: ChatRoom[]; + Name: "ChatRoom"; + Nullable: false; + }; + centerStaffChatRoom: { + Shape: ChatRoom[]; + Name: "ChatRoom"; + Nullable: false; + }; + CenterStaff: { + Shape: CenterStaff | null; + Name: "CenterStaff"; + Nullable: true; + }; + WorkshopSubscription: { + Shape: WorkshopSubscription[]; + Name: "WorkshopSubscription"; + Nullable: false; + }; + }; + }; + Center: { + Name: "Center"; + Shape: Center; + Include: Prisma.CenterInclude; + Select: Prisma.CenterSelect; + OrderBy: Prisma.CenterOrderByWithRelationInput; + WhereUnique: Prisma.CenterWhereUniqueInput; + Where: Prisma.CenterWhereInput; + Create: Prisma.CenterCreateInput; + Update: Prisma.CenterUpdateInput; + RelationName: "services" | "centerOwner" | "chatRoom" | "CenterStaff"; + ListRelations: "services" | "chatRoom" | "CenterStaff"; + Relations: { + services: { + Shape: Service[]; + Name: "Service"; + Nullable: false; + }; + centerOwner: { + Shape: User; + Name: "User"; + Nullable: false; + }; + chatRoom: { + Shape: ChatRoom[]; + Name: "ChatRoom"; + Nullable: false; + }; + CenterStaff: { + Shape: CenterStaff[]; + Name: "CenterStaff"; + Nullable: false; + }; + }; + }; + CenterStaff: { + Name: "CenterStaff"; + Shape: CenterStaff; + Include: Prisma.CenterStaffInclude; + Select: Prisma.CenterStaffSelect; + OrderBy: Prisma.CenterStaffOrderByWithRelationInput; + WhereUnique: Prisma.CenterStaffWhereUniqueInput; + Where: Prisma.CenterStaffWhereInput; + Create: Prisma.CenterStaffCreateInput; + Update: Prisma.CenterStaffUpdateInput; + RelationName: "staff" | "center" | "service" | "createdWorkshop"; + ListRelations: "createdWorkshop"; + Relations: { + staff: { + Shape: User; + Name: "User"; + Nullable: false; + }; + center: { + Shape: Center; + Name: "Center"; + Nullable: false; + }; + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + createdWorkshop: { + Shape: Workshop[]; + Name: "Workshop"; + Nullable: false; + }; + }; + }; + Service: { + Name: "Service"; + Shape: Service; + Include: Prisma.ServiceInclude; + Select: Prisma.ServiceSelect; + OrderBy: Prisma.ServiceOrderByWithRelationInput; + WhereUnique: Prisma.ServiceWhereUniqueInput; + Where: Prisma.ServiceWhereInput; + Create: Prisma.ServiceCreateInput; + Update: Prisma.ServiceUpdateInput; + RelationName: "managedBy" | "feedbacks" | "order" | "center" | "workshop" | "milestone" | "schedule" | "serviceAndCategory" | "workshopOrganization" | "user"; + ListRelations: "managedBy" | "feedbacks" | "order" | "workshop" | "milestone" | "schedule" | "serviceAndCategory" | "workshopOrganization"; + Relations: { + managedBy: { + Shape: CenterStaff[]; + Name: "CenterStaff"; + Nullable: false; + }; + feedbacks: { + Shape: ServiceFeedback[]; + Name: "ServiceFeedback"; + Nullable: false; + }; + order: { + Shape: Order[]; + Name: "Order"; + Nullable: false; + }; + center: { + Shape: Center; + Name: "Center"; + Nullable: false; + }; + workshop: { + Shape: Workshop[]; + Name: "Workshop"; + Nullable: false; + }; + milestone: { + Shape: Milestone[]; + Name: "Milestone"; + Nullable: false; + }; + schedule: { + Shape: Schedule[]; + Name: "Schedule"; + Nullable: false; + }; + serviceAndCategory: { + Shape: ServiceAndCategory[]; + Name: "ServiceAndCategory"; + Nullable: false; + }; + workshopOrganization: { + Shape: WorkshopOrganization[]; + Name: "WorkshopOrganization"; + Nullable: false; + }; + user: { + Shape: User | null; + Name: "User"; + Nullable: true; + }; + }; + }; + ServiceAndCategory: { + Name: "ServiceAndCategory"; + Shape: ServiceAndCategory; + Include: Prisma.ServiceAndCategoryInclude; + Select: Prisma.ServiceAndCategorySelect; + OrderBy: Prisma.ServiceAndCategoryOrderByWithRelationInput; + WhereUnique: Prisma.ServiceAndCategoryWhereUniqueInput; + Where: Prisma.ServiceAndCategoryWhereInput; + Create: Prisma.ServiceAndCategoryCreateInput; + Update: Prisma.ServiceAndCategoryUpdateInput; + RelationName: "service" | "category"; + ListRelations: never; + Relations: { + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + category: { + Shape: Category; + Name: "Category"; + Nullable: false; + }; + }; + }; + Category: { + Name: "Category"; + Shape: Category; + Include: Prisma.CategoryInclude; + Select: Prisma.CategorySelect; + OrderBy: Prisma.CategoryOrderByWithRelationInput; + WhereUnique: Prisma.CategoryWhereUniqueInput; + Where: Prisma.CategoryWhereInput; + Create: Prisma.CategoryCreateInput; + Update: Prisma.CategoryUpdateInput; + RelationName: "serviceAndCategory"; + ListRelations: "serviceAndCategory"; + Relations: { + serviceAndCategory: { + Shape: ServiceAndCategory[]; + Name: "ServiceAndCategory"; + Nullable: false; + }; + }; + }; + ServiceFeedback: { + Name: "ServiceFeedback"; + Shape: ServiceFeedback; + Include: Prisma.ServiceFeedbackInclude; + Select: Prisma.ServiceFeedbackSelect; + OrderBy: Prisma.ServiceFeedbackOrderByWithRelationInput; + WhereUnique: Prisma.ServiceFeedbackWhereUniqueInput; + Where: Prisma.ServiceFeedbackWhereInput; + Create: Prisma.ServiceFeedbackCreateInput; + Update: Prisma.ServiceFeedbackUpdateInput; + RelationName: "user" | "service"; + ListRelations: never; + Relations: { + user: { + Shape: User; + Name: "User"; + Nullable: false; + }; + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + }; + }; + Milestone: { + Name: "Milestone"; + Shape: Milestone; + Include: Prisma.MilestoneInclude; + Select: Prisma.MilestoneSelect; + OrderBy: Prisma.MilestoneOrderByWithRelationInput; + WhereUnique: Prisma.MilestoneWhereUniqueInput; + Where: Prisma.MilestoneWhereInput; + Create: Prisma.MilestoneCreateInput; + Update: Prisma.MilestoneUpdateInput; + RelationName: "service"; + ListRelations: never; + Relations: { + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + }; + }; + Schedule: { + Name: "Schedule"; + Shape: Schedule; + Include: Prisma.ScheduleInclude; + Select: Prisma.ScheduleSelect; + OrderBy: Prisma.ScheduleOrderByWithRelationInput; + WhereUnique: Prisma.ScheduleWhereUniqueInput; + Where: Prisma.ScheduleWhereInput; + Create: Prisma.ScheduleCreateInput; + Update: Prisma.ScheduleUpdateInput; + RelationName: "service"; + ListRelations: never; + Relations: { + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + }; + }; + ChatRoom: { + Name: "ChatRoom"; + Shape: ChatRoom; + Include: Prisma.ChatRoomInclude; + Select: Prisma.ChatRoomSelect; + OrderBy: Prisma.ChatRoomOrderByWithRelationInput; + WhereUnique: Prisma.ChatRoomWhereUniqueInput; + Where: Prisma.ChatRoomWhereInput; + Create: Prisma.ChatRoomCreateInput; + Update: Prisma.ChatRoomUpdateInput; + RelationName: "message" | "customer" | "center" | "centerStaff" | "meetingRoom"; + ListRelations: "message"; + Relations: { + message: { + Shape: Message[]; + Name: "Message"; + Nullable: false; + }; + customer: { + Shape: User; + Name: "User"; + Nullable: false; + }; + center: { + Shape: Center; + Name: "Center"; + Nullable: false; + }; + centerStaff: { + Shape: User | null; + Name: "User"; + Nullable: true; + }; + meetingRoom: { + Shape: ServiceMeetingRoom | null; + Name: "ServiceMeetingRoom"; + Nullable: true; + }; + }; + }; + Message: { + Name: "Message"; + Shape: Message; + Include: Prisma.MessageInclude; + Select: Prisma.MessageSelect; + OrderBy: Prisma.MessageOrderByWithRelationInput; + WhereUnique: Prisma.MessageWhereUniqueInput; + Where: Prisma.MessageWhereInput; + Create: Prisma.MessageCreateInput; + Update: Prisma.MessageUpdateInput; + RelationName: "sender" | "chatRoom"; + ListRelations: never; + Relations: { + sender: { + Shape: User; + Name: "User"; + Nullable: false; + }; + chatRoom: { + Shape: ChatRoom; + Name: "ChatRoom"; + Nullable: false; + }; + }; + }; + Order: { + Name: "Order"; + Shape: Order; + Include: Prisma.OrderInclude; + Select: Prisma.OrderSelect; + OrderBy: Prisma.OrderOrderByWithRelationInput; + WhereUnique: Prisma.OrderWhereUniqueInput; + Where: Prisma.OrderWhereInput; + Create: Prisma.OrderCreateInput; + Update: Prisma.OrderUpdateInput; + RelationName: "user" | "payment" | "service" | "refundTicket"; + ListRelations: never; + Relations: { + user: { + Shape: User; + Name: "User"; + Nullable: false; + }; + payment: { + Shape: Payment; + Name: "Payment"; + Nullable: false; + }; + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + refundTicket: { + Shape: RefundTicket | null; + Name: "RefundTicket"; + Nullable: true; + }; + }; + }; + RefundTicket: { + Name: "RefundTicket"; + Shape: RefundTicket; + Include: Prisma.RefundTicketInclude; + Select: Prisma.RefundTicketSelect; + OrderBy: Prisma.RefundTicketOrderByWithRelationInput; + WhereUnique: Prisma.RefundTicketWhereUniqueInput; + Where: Prisma.RefundTicketWhereInput; + Create: Prisma.RefundTicketCreateInput; + Update: Prisma.RefundTicketUpdateInput; + RelationName: "order"; + ListRelations: never; + Relations: { + order: { + Shape: Order; + Name: "Order"; + Nullable: false; + }; + }; + }; + Payment: { + Name: "Payment"; + Shape: Payment; + Include: Prisma.PaymentInclude; + Select: Prisma.PaymentSelect; + OrderBy: Prisma.PaymentOrderByWithRelationInput; + WhereUnique: Prisma.PaymentWhereUniqueInput; + Where: Prisma.PaymentWhereInput; + Create: Prisma.PaymentCreateInput; + Update: Prisma.PaymentUpdateInput; + RelationName: "Order"; + ListRelations: never; + Relations: { + Order: { + Shape: Order | null; + Name: "Order"; + Nullable: true; + }; + }; + }; + Workshop: { + Name: "Workshop"; + Shape: Workshop; + Include: Prisma.WorkshopInclude; + Select: Prisma.WorkshopSelect; + OrderBy: Prisma.WorkshopOrderByWithRelationInput; + WhereUnique: Prisma.WorkshopWhereUniqueInput; + Where: Prisma.WorkshopWhereInput; + Create: Prisma.WorkshopCreateInput; + Update: Prisma.WorkshopUpdateInput; + RelationName: "service" | "workshopOrganization" | "workshopSubscription" | "staff"; + ListRelations: "workshopOrganization" | "workshopSubscription"; + Relations: { + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + workshopOrganization: { + Shape: WorkshopOrganization[]; + Name: "WorkshopOrganization"; + Nullable: false; + }; + workshopSubscription: { + Shape: WorkshopSubscription[]; + Name: "WorkshopSubscription"; + Nullable: false; + }; + staff: { + Shape: CenterStaff; + Name: "CenterStaff"; + Nullable: false; + }; + }; + }; + WorkshopSubscription: { + Name: "WorkshopSubscription"; + Shape: WorkshopSubscription; + Include: Prisma.WorkshopSubscriptionInclude; + Select: Prisma.WorkshopSubscriptionSelect; + OrderBy: Prisma.WorkshopSubscriptionOrderByWithRelationInput; + WhereUnique: Prisma.WorkshopSubscriptionWhereUniqueInput; + Where: Prisma.WorkshopSubscriptionWhereInput; + Create: Prisma.WorkshopSubscriptionCreateInput; + Update: Prisma.WorkshopSubscriptionUpdateInput; + RelationName: "user" | "workshop"; + ListRelations: never; + Relations: { + user: { + Shape: User; + Name: "User"; + Nullable: false; + }; + workshop: { + Shape: Workshop; + Name: "Workshop"; + Nullable: false; + }; + }; + }; + WorkshopOrganization: { + Name: "WorkshopOrganization"; + Shape: WorkshopOrganization; + Include: Prisma.WorkshopOrganizationInclude; + Select: Prisma.WorkshopOrganizationSelect; + OrderBy: Prisma.WorkshopOrganizationOrderByWithRelationInput; + WhereUnique: Prisma.WorkshopOrganizationWhereUniqueInput; + Where: Prisma.WorkshopOrganizationWhereInput; + Create: Prisma.WorkshopOrganizationCreateInput; + Update: Prisma.WorkshopOrganizationUpdateInput; + RelationName: "workshop" | "service"; + ListRelations: never; + Relations: { + workshop: { + Shape: Workshop; + Name: "Workshop"; + Nullable: false; + }; + service: { + Shape: Service; + Name: "Service"; + Nullable: false; + }; + }; + }; + UploadedDocument: { + Name: "UploadedDocument"; + Shape: UploadedDocument; + Include: Prisma.UploadedDocumentInclude; + Select: Prisma.UploadedDocumentSelect; + OrderBy: Prisma.UploadedDocumentOrderByWithRelationInput; + WhereUnique: Prisma.UploadedDocumentWhereUniqueInput; + Where: Prisma.UploadedDocumentWhereInput; + Create: Prisma.UploadedDocumentCreateInput; + Update: Prisma.UploadedDocumentUpdateInput; + RelationName: "user"; + ListRelations: never; + Relations: { + user: { + Shape: User; + Name: "User"; + Nullable: false; + }; + }; + }; + ServiceMeetingRoom: { + Name: "ServiceMeetingRoom"; + Shape: ServiceMeetingRoom; + Include: Prisma.ServiceMeetingRoomInclude; + Select: Prisma.ServiceMeetingRoomSelect; + OrderBy: Prisma.ServiceMeetingRoomOrderByWithRelationInput; + WhereUnique: Prisma.ServiceMeetingRoomWhereUniqueInput; + Where: Prisma.ServiceMeetingRoomWhereInput; + Create: Prisma.ServiceMeetingRoomCreateInput; + Update: Prisma.ServiceMeetingRoomUpdateInput; + RelationName: "chattingRoom"; + ListRelations: never; + Relations: { + chattingRoom: { + Shape: ChatRoom; + Name: "ChatRoom"; + Nullable: false; + }; + }; + }; + WorkshopMeetingRoom: { + Name: "WorkshopMeetingRoom"; + Shape: WorkshopMeetingRoom; + Include: never; + Select: Prisma.WorkshopMeetingRoomSelect; + OrderBy: Prisma.WorkshopMeetingRoomOrderByWithRelationInput; + WhereUnique: Prisma.WorkshopMeetingRoomWhereUniqueInput; + Where: Prisma.WorkshopMeetingRoomWhereInput; + Create: Prisma.WorkshopMeetingRoomCreateInput; + Update: Prisma.WorkshopMeetingRoomUpdateInput; + RelationName: never; + ListRelations: never; + Relations: {}; + }; +} +export function getDatamodel(): PothosPrismaDatamodel { return JSON.parse("{\"datamodel\":{\"models\":{\"User\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"name\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"email\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"password\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"phoneNumber\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"oauthToken\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Role\",\"kind\":\"enum\",\"name\":\"role\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"Order\",\"kind\":\"object\",\"name\":\"orders\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"ServiceFeedback\",\"kind\":\"object\",\"name\":\"serviceFeedbacks\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceFeedbackToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"UploadedDocument\",\"kind\":\"object\",\"name\":\"documents\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"UploadedDocumentToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Message\",\"kind\":\"object\",\"name\":\"sendingMessage\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"MessageToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"Service\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Center\",\"kind\":\"object\",\"name\":\"center\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"ChatRoom\",\"kind\":\"object\",\"name\":\"customerChatRoom\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToCustomer\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"ChatRoom\",\"kind\":\"object\",\"name\":\"centerStaffChatRoom\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToCenterStaff\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"CenterStaff\",\"kind\":\"object\",\"name\":\"CenterStaff\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToUser\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"WorkshopSubscription\",\"kind\":\"object\",\"name\":\"WorkshopSubscription\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"UserToWorkshopSubscription\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Center\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"centerOwnerId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"name\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"description\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"location\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"services\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToService\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"centerOwner\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToUser\",\"relationFromFields\":[\"centerOwnerId\"],\"isUpdatedAt\":false},{\"type\":\"ChatRoom\",\"kind\":\"object\",\"name\":\"chatRoom\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToChatRoom\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"CenterStaff\",\"kind\":\"object\",\"name\":\"CenterStaff\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToCenterStaff\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"CenterStaff\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"staffId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"centerId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"staff\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToUser\",\"relationFromFields\":[\"staffId\"],\"isUpdatedAt\":false},{\"type\":\"Center\",\"kind\":\"object\",\"name\":\"center\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToCenterStaff\",\"relationFromFields\":[\"centerId\"],\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToService\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false},{\"type\":\"Workshop\",\"kind\":\"object\",\"name\":\"createdWorkshop\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToWorkshop\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"staffId\",\"centerId\"]},\"uniqueIndexes\":[]},\"Service\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"name\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"description\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"centerId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Float\",\"kind\":\"scalar\",\"name\":\"price\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Float\",\"kind\":\"scalar\",\"name\":\"rating\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"CenterStaff\",\"kind\":\"object\",\"name\":\"managedBy\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToService\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"ServiceFeedback\",\"kind\":\"object\",\"name\":\"feedbacks\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToServiceFeedback\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Order\",\"kind\":\"object\",\"name\":\"order\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToService\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Center\",\"kind\":\"object\",\"name\":\"center\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToService\",\"relationFromFields\":[\"centerId\"],\"isUpdatedAt\":false},{\"type\":\"Workshop\",\"kind\":\"object\",\"name\":\"workshop\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToWorkshop\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Milestone\",\"kind\":\"object\",\"name\":\"milestone\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"MilestoneToService\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"Schedule\",\"kind\":\"object\",\"name\":\"schedule\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ScheduleToService\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"ServiceAndCategory\",\"kind\":\"object\",\"name\":\"serviceAndCategory\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToServiceAndCategory\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"WorkshopOrganization\",\"kind\":\"object\",\"name\":\"workshopOrganization\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToWorkshopOrganization\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"user\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToUser\",\"relationFromFields\":[\"userId\"],\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"userId\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"ServiceAndCategory\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"categoryId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToServiceAndCategory\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false},{\"type\":\"Category\",\"kind\":\"object\",\"name\":\"category\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CategoryToServiceAndCategory\",\"relationFromFields\":[\"categoryId\"],\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"serviceId\",\"categoryId\"]},\"uniqueIndexes\":[]},\"Category\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"name\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"ServiceAndCategory\",\"kind\":\"object\",\"name\":\"serviceAndCategory\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CategoryToServiceAndCategory\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"ServiceFeedback\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"userId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Float\",\"kind\":\"scalar\",\"name\":\"rating\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"comments\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"user\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceFeedbackToUser\",\"relationFromFields\":[\"userId\"],\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToServiceFeedback\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Milestone\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"name\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Int\",\"kind\":\"scalar\",\"name\":\"order\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"description\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"MilestoneToService\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Schedule\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ScheduleToService\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false},{\"type\":\"Json\",\"kind\":\"scalar\",\"name\":\"dates\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"ScheduleStatus\",\"kind\":\"enum\",\"name\":\"status\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"ChatRoom\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"ChatRoomType\",\"kind\":\"enum\",\"name\":\"type\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"customerId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"centerId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"centerStaffId\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Message\",\"kind\":\"object\",\"name\":\"message\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToMessage\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"customer\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToCustomer\",\"relationFromFields\":[\"customerId\"],\"isUpdatedAt\":false},{\"type\":\"Center\",\"kind\":\"object\",\"name\":\"center\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterToChatRoom\",\"relationFromFields\":[\"centerId\"],\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"centerStaff\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToCenterStaff\",\"relationFromFields\":[\"centerStaffId\"],\"isUpdatedAt\":false},{\"type\":\"ServiceMeetingRoom\",\"kind\":\"object\",\"name\":\"meetingRoom\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToServiceMeetingRoom\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Message\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"senderId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"chatRoomId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Json\",\"kind\":\"scalar\",\"name\":\"message\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"sentAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"sender\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"MessageToUser\",\"relationFromFields\":[\"senderId\"],\"isUpdatedAt\":false},{\"type\":\"ChatRoom\",\"kind\":\"object\",\"name\":\"chatRoom\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToMessage\",\"relationFromFields\":[\"chatRoomId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Order\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"paymentId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"userId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"status\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Int\",\"kind\":\"scalar\",\"name\":\"total\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"user\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToUser\",\"relationFromFields\":[\"userId\"],\"isUpdatedAt\":false},{\"type\":\"Payment\",\"kind\":\"object\",\"name\":\"payment\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToPayment\",\"relationFromFields\":[\"paymentId\"],\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToService\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false},{\"type\":\"RefundTicket\",\"kind\":\"object\",\"name\":\"refundTicket\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToRefundTicket\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"RefundTicket\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"orderId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Float\",\"kind\":\"scalar\",\"name\":\"amount\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"PaymentStatus\",\"kind\":\"enum\",\"name\":\"status\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"Order\",\"kind\":\"object\",\"name\":\"order\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToRefundTicket\",\"relationFromFields\":[\"orderId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Payment\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"Float\",\"kind\":\"scalar\",\"name\":\"amount\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"PaymentStatus\",\"kind\":\"enum\",\"name\":\"status\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"Order\",\"kind\":\"object\",\"name\":\"Order\",\"isRequired\":false,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"OrderToPayment\",\"relationFromFields\":[],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"Workshop\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"title\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"description\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"staffId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"date\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"createdAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"updatedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":true},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToWorkshop\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false},{\"type\":\"WorkshopOrganization\",\"kind\":\"object\",\"name\":\"workshopOrganization\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"WorkshopToWorkshopOrganization\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"WorkshopSubscription\",\"kind\":\"object\",\"name\":\"workshopSubscription\",\"isRequired\":true,\"isList\":true,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"WorkshopToWorkshopSubscription\",\"relationFromFields\":[],\"isUpdatedAt\":false},{\"type\":\"CenterStaff\",\"kind\":\"object\",\"name\":\"staff\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"CenterStaffToWorkshop\",\"relationFromFields\":[\"staffId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"WorkshopSubscription\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"userId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"workshopId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"user\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"UserToWorkshopSubscription\",\"relationFromFields\":[\"userId\"],\"isUpdatedAt\":false},{\"type\":\"Workshop\",\"kind\":\"object\",\"name\":\"workshop\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"WorkshopToWorkshopSubscription\",\"relationFromFields\":[\"workshopId\"],\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"userId\",\"workshopId\"]},\"uniqueIndexes\":[]},\"WorkshopOrganization\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"workshopId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"serviceId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"Workshop\",\"kind\":\"object\",\"name\":\"workshop\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"WorkshopToWorkshopOrganization\",\"relationFromFields\":[\"workshopId\"],\"isUpdatedAt\":false},{\"type\":\"Service\",\"kind\":\"object\",\"name\":\"service\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ServiceToWorkshopOrganization\",\"relationFromFields\":[\"serviceId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"workshopId\",\"serviceId\"]}]},\"UploadedDocument\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"userId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"documentName\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"UploadedDocumentType\",\"kind\":\"enum\",\"name\":\"documentType\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"documentUrl\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"DateTime\",\"kind\":\"scalar\",\"name\":\"uploadedAt\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"User\",\"kind\":\"object\",\"name\":\"user\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"UploadedDocumentToUser\",\"relationFromFields\":[\"userId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"ServiceMeetingRoom\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"chattingRoomId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":true,\"isId\":false,\"isUpdatedAt\":false},{\"type\":\"ChatRoom\",\"kind\":\"object\",\"name\":\"chattingRoom\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"relationName\":\"ChatRoomToServiceMeetingRoom\",\"relationFromFields\":[\"chattingRoomId\"],\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]},\"WorkshopMeetingRoom\":{\"fields\":[{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"id\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":true,\"isUnique\":false,\"isId\":true,\"isUpdatedAt\":false},{\"type\":\"String\",\"kind\":\"scalar\",\"name\":\"workshopId\",\"isRequired\":true,\"isList\":false,\"hasDefaultValue\":false,\"isUnique\":false,\"isId\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueIndexes\":[]}}}}"); } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 5b25e6d..134fcf6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,4 +19,4 @@ "noFallthroughCasesInSwitch": true, "strict": true, } -} +} \ No newline at end of file