Files
speckle-server/packages/server/modules/notifications/graph/resolvers/userNotificationPreferences.ts
T

45 lines
1.4 KiB
TypeScript

import { db } from '@/db/knex'
import { Resolvers } from '@/modules/core/graph/generated/graphql'
import {
getSavedUserNotificationPreferencesFactory,
saveUserNotificationPreferencesFactory
} from '@/modules/notifications/repositories'
import {
getUserNotificationPreferencesFactory,
updateNotificationPreferencesFactory
} from '@/modules/notifications/services/notificationPreferences'
import { withOperationLogging } from '@/observability/domain/businessLogging'
const getUserNotificationPreferences = getUserNotificationPreferencesFactory({
getSavedUserNotificationPreferences: getSavedUserNotificationPreferencesFactory({
db
})
})
const updateNotificationPreferences = updateNotificationPreferencesFactory({
saveUserNotificationPreferences: saveUserNotificationPreferencesFactory({ db })
})
export = {
User: {
async notificationPreferences(parent) {
const preferences = await getUserNotificationPreferences(parent.id)
return preferences
}
},
Mutation: {
async userNotificationPreferencesUpdate(_parent, args, context) {
const logger = context.log
await await withOperationLogging(
async () => updateNotificationPreferences(context.userId!, args.preferences),
{
logger,
operationName: 'userNotificationPreferencesUpdate',
operationDescription: 'Update user notification preferences'
}
)
return true
}
}
} as Resolvers