UNPKG

@backstage/backend-defaults

Version:

Backend defaults used by Backstage backend apps

41 lines (37 loc) 1.46 kB
'use strict'; var lodash = require('lodash'); var luxon = require('luxon'); var migrateBackendTasks = require('../database/migrateBackendTasks.cjs.js'); var PluginTaskSchedulerImpl = require('./PluginTaskSchedulerImpl.cjs.js'); var PluginTaskSchedulerJanitor = require('./PluginTaskSchedulerJanitor.cjs.js'); class DefaultSchedulerService { static create(options) { const databaseFactory = lodash.once(async () => { const knex = await options.database.getClient(); if (!options.database.migrations?.skip) { await migrateBackendTasks.migrateBackendTasks(knex); } if (process.env.NODE_ENV !== "test") { const abortController = new AbortController(); const janitor = new PluginTaskSchedulerJanitor.PluginTaskSchedulerJanitor({ knex, waitBetweenRuns: luxon.Duration.fromObject({ minutes: 1 }), logger: options.logger }); options.rootLifecycle.addShutdownHook(() => abortController.abort()); janitor.start(abortController.signal); } return knex; }); const scheduler = new PluginTaskSchedulerImpl.PluginTaskSchedulerImpl( options.pluginMetadata.getId(), databaseFactory, options.logger, options.rootLifecycle ); options.httpRouter.use(scheduler.getRouter()); return scheduler; } } exports.DefaultSchedulerService = DefaultSchedulerService; //# sourceMappingURL=DefaultSchedulerService.cjs.js.map