(
server: FastifyInstance,
dbManager: DatabaseManager,
pathProvider: PathProvider,
serverInfo: { port: number; host: string; token: string }
)
| 30 | let pullEngine: PullEngine | null = null |
| 31 | |
| 32 | export function initSync( |
| 33 | server: FastifyInstance, |
| 34 | dbManager: DatabaseManager, |
| 35 | pathProvider: PathProvider, |
| 36 | serverInfo: { port: number; host: string; token: string } |
| 37 | ): void { |
| 38 | const settingsDir = pathProvider.getSettingsDir() |
| 39 | |
| 40 | dsManager = new DataSourceManager(settingsDir, syncLogger) |
| 41 | |
| 42 | const fetcher = new NodeFetcher() |
| 43 | const importer = new DirectImporter(dbManager, syncLogger) |
| 44 | const notifier = new NoopNotifier() |
| 45 | |
| 46 | const sessionAdapter = createDatabaseManagerAdapter(dbManager) |
| 47 | const preferences = new PreferencesManager(pathProvider.getSystemDir()) |
| 48 | |
| 49 | pullEngine = new PullEngine({ |
| 50 | fetcher, |
| 51 | importer, |
| 52 | notifier, |
| 53 | dsManager, |
| 54 | logger: syncLogger, |
| 55 | onSessionImported: (localSessionId) => { |
| 56 | preferences.invalidateCache() |
| 57 | const result = ownerProfileService.tryApplyOwnerProfile(sessionAdapter, preferences, localSessionId) |
| 58 | if (result.applied) { |
| 59 | syncLogger.info(`[Pull] Applied owner profile to session ${localSessionId} (owner: ${result.ownerId})`) |
| 60 | } |
| 61 | }, |
| 62 | }) |
| 63 | |
| 64 | registerAutomationRoutes(server, { dsManager, pullEngine, dbManager, serverInfo }) |
| 65 | |
| 66 | initScheduler({ |
| 67 | dsManager, |
| 68 | pullEngine, |
| 69 | logger: syncLogger, |
| 70 | }) |
| 71 | } |
| 72 | |
| 73 | export function cleanupSync(): void { |
| 74 | stopAllTimers() |
no test coverage detected