Files
XCDesktop/api/modules/time-tracking/index.ts
2026-03-08 01:34:54 +08:00

39 lines
1.3 KiB
TypeScript

import type { Router } from 'express'
import type { ServiceContainer } from '../../infra/container.js'
import { createApiModule } from '../../infra/createModule.js'
import { TIME_TRACKING_MODULE } from '../../../shared/modules/time-tracking/index.js'
import {
TimeTrackerService,
initializeTimeTrackerService,
type TimeTrackerServiceConfig
} from './timeService.js'
import { createTimeTrackingRoutes } from './routes.js'
export * from './timeService.js'
export * from './heartbeatService.js'
export * from './sessionPersistence.js'
export * from './routes.js'
export interface TimeTrackingModuleConfig {
config?: TimeTrackerServiceConfig
}
export const createTimeTrackingModule = (moduleConfig: TimeTrackingModuleConfig = {}) => {
let serviceInstance: TimeTrackerService | undefined
return createApiModule(TIME_TRACKING_MODULE, {
routes: (container: ServiceContainer): Router => {
const timeTrackerService = container.getSync<TimeTrackerService>('timeTrackerService')
return createTimeTrackingRoutes({ timeTrackerService })
},
lifecycle: {
onLoad: async (container: ServiceContainer): Promise<void> => {
serviceInstance = await initializeTimeTrackerService(moduleConfig.config)
container.register('timeTrackerService', () => serviceInstance!)
},
},
})
}
export default createTimeTrackingModule