Files
speckle-server/packages/server/modules/notifications/index.ts
T
Iain Sproat 444d2ca7dd Structured logging (attempt 2) (#1234)
* Revert "Revert "feat(structured logging): implements structured logging for backend (#1217)" (#1227)"

This reverts commit 63e6581162.

* Use pino-http instead of express pino logger
* Use correct reference to knex and do not instantiate HttpLogger prematurely
* Adds missing dependency for pino to webhook-service
* Do not instantiate middleware when passed to express
* Refactor to move logging into shared
* Copy shared packages into dockerfiles
* Build shared workspace in docker build-stage for fileimport & webhook
2022-12-05 14:49:52 +00:00

58 lines
1.8 KiB
TypeScript

import {
initializeQueue,
consumeIncomingNotifications,
registerNotificationHandlers,
shutdownQueue
} from '@/modules/notifications/services/queue'
import {
NotificationType,
NotificationTypeHandlers
} from '@/modules/notifications/helpers/types'
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
import { shouldDisableNotificationsConsumption } from '@/modules/shared/helpers/envHelper'
import { moduleLogger } from '@/logging/logging'
export async function initializeConsumption(
customHandlers?: Partial<NotificationTypeHandlers>
) {
moduleLogger.info('📞 Initializing notification queue consumption...')
const allHandlers: Partial<NotificationTypeHandlers> = {
[NotificationType.MentionedInComment]: (
await import('@/modules/notifications/services/handlers/mentionedInComment')
).default,
[NotificationType.NewStreamAccessRequest]: (
await import('@/modules/notifications/services/handlers/newStreamAccessRequest')
).default,
[NotificationType.StreamAccessRequestApproved]: (
await import(
'@/modules/notifications/services/handlers/streamAccessRequestApproved'
)
).default,
[NotificationType.ActivityDigest]: (
await import('@/modules/notifications/services/handlers/activityDigest')
).default
}
registerNotificationHandlers(customHandlers || allHandlers)
initializeQueue()
if (shouldDisableNotificationsConsumption()) {
moduleLogger.info('Skipping notification consumption...')
} else {
await consumeIncomingNotifications()
}
}
export const init: SpeckleModule['init'] = async (_, isInitial) => {
moduleLogger.info('📞 Init notifications module')
if (isInitial) {
await initializeConsumption()
}
}
export const shutdown: SpeckleModule['shutdown'] = async () => {
await shutdownQueue()
}