| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import fs from 'fs';
- import fsp from 'fs/promises';
- import path from 'path';
- import moment from 'moment';
- import { Pool } from 'mysql';
- import { Logger, LogLevel } from '../../common/util/logger.class';
- import { ControllerPool } from './ctrl/controller-pool.interface';
- import { HttpCheckController } from './ctrl/http-check-controller.class';
- import { MariaDBDatabase } from './ctrl/mariadb-database.class';
- import { MariaDBImporter } from './ctrl/mariadb-importer.class';
- import { MariaDBPoolFactory } from './ctrl/mariadb-poolfactory.class';
- import { ServerConnector } from './ctrl/server-connector.class';
- import { Webserver } from './webserver.class';
- import { Timer } from './timer.class';
- const LOG_LEVEL: LogLevel = (process.env.LOG_LEVEL as LogLevel) || 'INFO';
- Logger.logLevel = LOG_LEVEL;
- process.on('SIGABRT', exitGracefully);
- process.on('SIGQUIT', exitGracefully);
- process.on('SIGTERM', exitGracefully);
- let pool: ControllerPool;
- let db: MariaDBDatabase;
- let mig: MariaDBImporter;
- let connectionPool: Pool;
- (async () => {
- connectionPool = await MariaDBPoolFactory.createConnectionPool();
- const sqliteDir = path.resolve(process.cwd(), process.env.DATA_DIR || 'data');
- const doneFile = path.resolve(sqliteDir, 'import_done.txt');
- if (fs.existsSync(sqliteDir) && !fs.existsSync(doneFile)) {
- mig = new MariaDBImporter(connectionPool);
- await mig.connect();
- await mig.runImport();
- await fsp.writeFile(doneFile, moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ'), { encoding: 'utf-8' });
- }
- db = new MariaDBDatabase(connectionPool);
- await db.open();
- pool = {
- connectionPool,
- serverConnector: new ServerConnector(connectionPool),
- httpChecks: new HttpCheckController(connectionPool)
- };
- Timer.instance.start();
- new Webserver(Number(process.env.WEB_PORT ?? '80'), pool);
- })();
- async function exitGracefully(...args: any[]) {
- Logger.info(`[EXITING] Graceful exit, received ${JSON.stringify(args)}`);
- try {
- if (mig) {
- Logger.info(`[EXITING] Tear down MariaDBImporter instance ...`);
- await mig.close();
- }
- Logger.info(`[EXITING] Tear down Main Database Controller ...`);
- if (db) await db.close();
- Logger.info(`[EXITING] Tear down MariaDB Connection Pool ...`);
- if (connectionPool) await MariaDBPoolFactory.end(connectionPool);
- } catch (err) {
- Logger.error(`[ERROR] Tear down sequence failed:`, err);
- process.exit(2);
- }
- Logger.info(`[EXITING] Tear down sequence succeeded. exiting.`);
- process.exit(0);
- }
|