UNPKG

@alithya-oss/backstage-plugin-time-saver-backend

Version:

This plugin provides an implementation of charts and statistics related to your time savings that are coming from usage of your templates. Plugins is built from frontend and backend part. Backend plugin is responsible for scheduled stats parsing process a

136 lines (132 loc) 3.55 kB
'use strict'; var handler = require('../timeSaver/handler.cjs.js'); var timeSaverApi = require('../api/timeSaverApi.cjs.js'); var ScaffolderDatabase = require('../database/ScaffolderDatabase.cjs.js'); var TimeSaverDatabase = require('../database/TimeSaverDatabase.cjs.js'); var scheduler = require('../timeSaver/scheduler.cjs.js'); var commonRouter = require('./commonRouter.cjs.js'); const TS_PLUGIN_DEFAULT_SCHEDULE = { frequency: { minutes: 5 }, timeout: { minutes: 30 }, initialDelay: { seconds: 30 } }; class PluginInitializer { auth; router; logger; config; database; discovery; lifecycle; scheduler; tsHandler; apiHandler; tsScheduler; constructor(auth, router, logger, config, database, discovery, lifecycle, scheduler) { this.auth = auth; this.router = router; this.logger = logger; this.config = config; this.database = database; this.discovery = discovery; this.lifecycle = lifecycle; this.scheduler = scheduler; } static async builder(auth, router, logger, config, database, discovery, lifecycle, scheduler) { const instance = new PluginInitializer( auth, router, logger, config, database, discovery, lifecycle, scheduler ); await instance.initialize(); return instance; } async initialize() { this.auth = this.dependencies.auth; this.logger = this.dependencies.logger; this.config = this.dependencies.config; this.database = this.dependencies.database; this.discovery = this.dependencies.discovery; this.lifecycle = this.dependencies.lifecycle; this.scheduler = this.dependencies.scheduler; const timeSaverDbInstance = await TimeSaverDatabase.TimeSaverDatabase.create( this.database, this.logger ); const scaffolderDbInstance = await ScaffolderDatabase.ScaffolderDatabase.create( this.config, this.logger, this.lifecycle ); this.tsHandler = new handler.TimeSaverHandler( this.auth, this.logger, this.discovery, timeSaverDbInstance ); this.apiHandler = new timeSaverApi.TimeSaverApi( this.auth, this.logger, this.config, this.discovery, timeSaverDbInstance, scaffolderDbInstance ); this.tsScheduler = new scheduler.TsScheduler( this.auth, this.logger, this.discovery, timeSaverDbInstance ); const taskRunner = this.scheduler.createScheduledTaskRunner( TS_PLUGIN_DEFAULT_SCHEDULE ); this.tsScheduler.schedule(taskRunner); this.router = commonRouter.setupCommonRoutes( this.router, this.logger, this.tsHandler, this.tsApi ); } get dependencies() { if (!this.auth || !this.router || !this.logger || !this.config || !this.database || !this.discovery || !this.lifecycle || !this.scheduler) { throw new Error("PluginInitializer not properly initialized"); } return { auth: this.auth, router: this.router, logger: this.logger, config: this.config, database: this.database, discovery: this.discovery, lifecycle: this.lifecycle, scheduler: this.scheduler }; } get timeSaverHandler() { return this.tsHandler; } get tsApi() { return this.apiHandler; } get timeSaverScheduler() { return this.tsScheduler; } get timeSaverRouter() { return this.router; } } exports.PluginInitializer = PluginInitializer; //# sourceMappingURL=pluginInitializer.cjs.js.map