Update dependencies in package.json and package-lock.json, refactor CronService to include notification handling for schedule expirations, and enhance DocumentSchema with OpenAI integration for document editing suggestions. Additionally, modify GraphqlModule to include PubSubModule for real-time notifications and improve datetime utility functions for better date formatting. Update epess-database subproject reference to indicate a dirty state.

This commit is contained in:
2024-11-30 16:41:47 +07:00
parent 7cff5069de
commit a619c95efc
17 changed files with 971 additions and 863 deletions

View File

@@ -44,6 +44,8 @@ import { DocumentModule } from 'src/Document/document.module'
import { Context } from 'graphql-ws'
import { AnalyticModule } from 'src/Analytic/analytic.module'
import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
import { PubSubModule } from 'src/PubSub/pubsub.module'
import { PubSubService } from 'src/PubSub/pubsub.service'
@Global()
@Module({
@@ -81,6 +83,7 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
DocumentModule,
AnalyticModule,
MeetingRoomModule,
PubSubModule,
PothosModule.forRoot({
builder: {
inject: [PrismaService],
@@ -89,11 +92,8 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
}),
GraphQLModule.forRootAsync<ApolloDriverConfig>({
driver: PothosApolloDriver,
inject: [GraphqlService, 'PUB_SUB'],
useFactory: async (
graphqlService: GraphqlService,
pubsub: RedisPubSub,
) => ({
inject: [GraphqlService, 'PUB_SUB_REDIS'],
useFactory: async (graphqlService: GraphqlService, pubsub: RedisPubSub) => ({
path: process.env.API_PATH + '/graphql',
debug: process.env.NODE_ENV === 'development' || false,
playground: process.env.NODE_ENV === 'development' || false,
@@ -115,8 +115,7 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
throw new Error('No extra provided')
}
// @ts-expect-error: TODO
ctx.extra.request.headers['x-session-id'] =
ctx.connectionParams['x-session-id']
ctx.extra.request.headers['x-session-id'] = ctx.connectionParams['x-session-id']
},
},
},
@@ -153,10 +152,7 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
req,
me: req ? await graphqlService.acquireContext(req) : null,
pubSub: pubsub,
invalidateCache: () =>
graphqlService.invalidateCache(
req?.headers['x-session-id'] as string,
),
invalidateCache: () => graphqlService.invalidateCache(req?.headers['x-session-id'] as string),
},
}
},
@@ -167,8 +163,7 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
RedisService,
{
provide: GraphqlService,
useFactory: (prisma: PrismaService, redis: RedisService) =>
new GraphqlService(prisma, redis),
useFactory: (prisma: PrismaService, redis: RedisService) => new GraphqlService(prisma, redis),
inject: [PrismaService, 'REDIS_CLIENT'],
},
{
@@ -181,21 +176,8 @@ import { MeetingRoomModule } from 'src/MeetingRoom/meetingroom.module'
useFactory: (builder: Builder) => new PrismaCrudGenerator(builder),
inject: [Builder],
},
{
provide: 'PUB_SUB',
useFactory: () =>
new RedisPubSub({
connection:
process.env.REDIS_PUBSUB_URL ?? 'redis://10.0.27.1:6379/7',
}),
},
],
exports: [
Builder,
PrismaCrudGenerator,
GraphqlService,
RedisService,
'PUB_SUB',
PubSubService,
],
exports: [Builder, PrismaCrudGenerator, GraphqlService, RedisService],
})
export class GraphqlModule {}