gradido/core/src/command/BaseCommand.ts
clauspeterhuebner 3ce4b92d0f linting
2026-02-19 02:30:53 +01:00

56 lines
1.9 KiB
TypeScript

import { getLogger } from 'log4js'
import { LOG4JS_BASE_CATEGORY_NAME } from '../config/const'
import { Command } from './Command'
const createLogger = (method: string) =>
getLogger(`${LOG4JS_BASE_CATEGORY_NAME}.command.BaseCommand.${method}`)
export abstract class BaseCommand<T = any> implements Command<T> {
protected abstract requiredFields: string[]
protected constructor(protected readonly params: any[]) {
// this.validateRequiredFields();
}
abstract execute(): Promise<string | boolean | null | Error>
private validateRequiredFields(): void {
const methodLogger = createLogger(`validateRequiredFields`)
if (!this.requiredFields || this.requiredFields.length === 0) {
methodLogger.debug(`validateRequiredFields() no required fields`)
return
}
methodLogger.debug(
`validateRequiredFields() requiredFields=${JSON.stringify(this.requiredFields)}`,
)
/*
const commandArgs = JSON.parse(this.params[0])
const missingFields = this.requiredFields.filter(field =>
commandArgs.{ field } === undefined || commandArgs.{ field } === null || commandArgs.{ field } === ''
);
methodLogger.debug(`validateRequiredFields() missingFields=${JSON.stringify(missingFields)}`)
if (missingFields.length > 0) {
methodLogger.error(`validateRequiredFields() missing fields: ${missingFields.join(', ')}`)
throw new Error(`Missing required fields for ${this.constructor.name}: ${missingFields.join(', ')}`);
}
*/
}
validate(): boolean {
const methodLogger = createLogger(`validate`)
methodLogger.debug(
`validate() requiredFields=${JSON.stringify(this.requiredFields)} params=${JSON.stringify(this.params)}`,
)
/*
const isValid = this.requiredFields.every(field =>
this.params[field] !== undefined &&
this.params[field] !== null &&
this.params[field] !== ''
);
methodLogger.debug(`validate() isValid=${isValid}`)
*/
return true
}
}