import * as plugins from './slclick.plugins.js'; export class SmartlogDestinationClickhouse implements plugins.smartlogInterfaces.ILogDestination { // STATIC public static async createAndStart( optionsArg: plugins.smartclickhouse.IClickhouseConstructorOptions ) { const destinationClickhouse = new SmartlogDestinationClickhouse(optionsArg); await destinationClickhouse.start(); return destinationClickhouse; } // INSTANCE private smartclickhouseDb: plugins.smartclickhouse.SmartClickHouseDb; private logTable: plugins.smartclickhouse.TimeDataTable; constructor(options: plugins.smartclickhouse.IClickhouseConstructorOptions) { this.smartclickhouseDb = new plugins.smartclickhouse.SmartClickHouseDb(options); } public async start() { await this.smartclickhouseDb.start(); this.logTable = await this.smartclickhouseDb.getTable('logs'); } public async handleLog( logPackage: plugins.smartlogInterfaces.ILogPackage ): Promise { await this.logTable.addData(logPackage); } }