import { Command } from '@oclif/core'; import { LoggerProxy } from 'n8n-workflow'; import { getLogger, Logger } from '../src/Logger'; import { User } from '../src/databases/entities/User'; import { Db } from '../src'; export abstract class BaseCommand extends Command { logger: Logger; /** * Lifecycle methods */ async init(): Promise { this.logger = getLogger(); LoggerProxy.init(this.logger); await Db.init(); } async finally(): Promise { if (process.env.NODE_ENV === 'test') return; this.exit(); } /** * User Management utils */ defaultUserProps = { firstName: null, lastName: null, email: null, password: null, resetPasswordToken: null, }; async getInstanceOwner(): Promise { const globalRole = await Db.collections.Role.findOneOrFail({ name: 'owner', scope: 'global', }); const owner = await Db.collections.User.findOne({ globalRole }); if (owner) return owner; const user = new User(); Object.assign(user, { ...this.defaultUserProps, globalRole }); await Db.collections.User.save(user); return Db.collections.User.findOneOrFail({ globalRole }); } }