Initial commit
This commit is contained in:
38
api/modules/time-tracking/index.ts
Normal file
38
api/modules/time-tracking/index.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
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
|
||||
Reference in New Issue
Block a user