@backstage/backend-defaults
Version:
Backend defaults used by Backstage backend apps
41 lines (37 loc) • 1.46 kB
JavaScript
;
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