mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	refactor: separate scheduling from DI (#3017)
This commit is contained in:
		
							parent
							
								
									1e35c30fde
								
							
						
					
					
						commit
						d9110b6ce5
					
				| @ -5,7 +5,7 @@ import { migrateDb } from '../migrator'; | ||||
| import getApp from './app'; | ||||
| import { createMetricsMonitor } from './metrics'; | ||||
| import { createStores } from './db'; | ||||
| import { createServices } from './services'; | ||||
| import { createServices, scheduleServices } from './services'; | ||||
| import { createConfig } from './create-config'; | ||||
| import { addEventHook } from './event-hook'; | ||||
| import registerGracefulShutdown from './util/graceful-shutdown'; | ||||
| @ -43,6 +43,7 @@ async function createApp( | ||||
|     const db = createDb(config); | ||||
|     const stores = createStores(config, db); | ||||
|     const services = createServices(stores, config); | ||||
|     scheduleServices(services, config); | ||||
| 
 | ||||
|     const metricsMonitor = createMetricsMonitor(); | ||||
|     const unleashSession = sessionDb(config, db); | ||||
|  | ||||
| @ -40,9 +40,44 @@ import { InstanceStatsService } from './instance-stats-service'; | ||||
| import { FavoritesService } from './favorites-service'; | ||||
| import MaintenanceService from './maintenance-service'; | ||||
| import ExportImportService from './export-import-service'; | ||||
| import SchedulerService from './scheduler-service'; | ||||
| import { minutesToMilliseconds } from 'date-fns'; | ||||
| import { AccountService } from './account-service'; | ||||
| import { SchedulerService } from './scheduler-service'; | ||||
| 
 | ||||
| export const scheduleServices = ( | ||||
|     services: IUnleashServices, | ||||
|     config: IUnleashConfig, | ||||
| ): void => { | ||||
|     const { | ||||
|         schedulerService, | ||||
|         apiTokenService, | ||||
|         instanceStatsService, | ||||
|         projectService, | ||||
|     } = services; | ||||
| 
 | ||||
|     schedulerService.schedule( | ||||
|         apiTokenService.fetchActiveTokens.bind(apiTokenService), | ||||
|         minutesToMilliseconds(1), | ||||
|     ); | ||||
| 
 | ||||
|     schedulerService.schedule( | ||||
|         apiTokenService.updateLastSeen.bind(apiTokenService), | ||||
|         minutesToMilliseconds(3), | ||||
|     ); | ||||
| 
 | ||||
|     schedulerService.schedule( | ||||
|         instanceStatsService.refreshStatsSnapshot.bind(instanceStatsService), | ||||
|         minutesToMilliseconds(5), | ||||
|     ); | ||||
| 
 | ||||
|     if (config.flagResolver.isEnabled('projectStatusApi')) { | ||||
|         const ONE_DAY = 1440; | ||||
|         schedulerService.schedule( | ||||
|             projectService.statusJob.bind(projectService), | ||||
|             minutesToMilliseconds(ONE_DAY), | ||||
|         ); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| export const createServices = ( | ||||
|     stores: IUnleashStores, | ||||
| @ -146,28 +181,6 @@ export const createServices = ( | ||||
|     ); | ||||
| 
 | ||||
|     const schedulerService = new SchedulerService(config.getLogger); | ||||
|     schedulerService.schedule( | ||||
|         apiTokenService.fetchActiveTokens.bind(apiTokenService), | ||||
|         minutesToMilliseconds(1), | ||||
|     ); | ||||
| 
 | ||||
|     schedulerService.schedule( | ||||
|         apiTokenService.updateLastSeen.bind(apiTokenService), | ||||
|         minutesToMilliseconds(3), | ||||
|     ); | ||||
| 
 | ||||
|     schedulerService.schedule( | ||||
|         instanceStatsService.refreshStatsSnapshot.bind(instanceStatsService), | ||||
|         minutesToMilliseconds(5), | ||||
|     ); | ||||
| 
 | ||||
|     if (config.flagResolver.isEnabled('projectStatusApi')) { | ||||
|         const ONE_DAY = 1440; | ||||
|         schedulerService.schedule( | ||||
|             projectService.statusJob.bind(projectService), | ||||
|             minutesToMilliseconds(ONE_DAY), | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     return { | ||||
|         accessService, | ||||
| @ -212,6 +225,7 @@ export const createServices = ( | ||||
|         favoritesService, | ||||
|         maintenanceService, | ||||
|         exportImportService, | ||||
|         schedulerService, | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
| @ -255,4 +269,5 @@ export { | ||||
|     InstanceStatsService, | ||||
|     FavoritesService, | ||||
|     ExportImportService, | ||||
|     SchedulerService, | ||||
| }; | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| import SchedulerService from './scheduler-service'; | ||||
| import { SchedulerService } from './scheduler-service'; | ||||
| 
 | ||||
| function ms(timeMs) { | ||||
|     return new Promise((resolve) => setTimeout(resolve, timeMs)); | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { Logger, LogProvider } from '../logger'; | ||||
| 
 | ||||
| export default class SchedulerService { | ||||
| export class SchedulerService { | ||||
|     private intervalIds: NodeJS.Timer[] = []; | ||||
| 
 | ||||
|     private logger: Logger; | ||||
|  | ||||
| @ -35,10 +35,11 @@ import PatService from '../services/pat-service'; | ||||
| import { PublicSignupTokenService } from '../services/public-signup-token-service'; | ||||
| import { LastSeenService } from '../services/client-metrics/last-seen-service'; | ||||
| import { InstanceStatsService } from '../services/instance-stats-service'; | ||||
| import { FavoritesService } from '../services'; | ||||
| import { FavoritesService } from '../services/favorites-service'; | ||||
| import MaintenanceService from '../services/maintenance-service'; | ||||
| import ExportImportService from 'lib/services/export-import-service'; | ||||
| import { AccountService } from '../services/account-service'; | ||||
| import { SchedulerService } from '../services/scheduler-service'; | ||||
| 
 | ||||
| export interface IUnleashServices { | ||||
|     accessService: AccessService; | ||||
| @ -83,4 +84,5 @@ export interface IUnleashServices { | ||||
|     favoritesService: FavoritesService; | ||||
|     maintenanceService: MaintenanceService; | ||||
|     exportImportService: ExportImportService; | ||||
|     schedulerService: SchedulerService; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user