vulcain-corejs
Version:
Vulcain micro-service framework
64 lines (63 loc) • 1.34 kB
TypeScript
import { ExecutionResult } from './executionResult';
import { IContainer } from '../../di/resolvers';
import { RequestContext } from '../../servers/requestContext';
import { IMetrics } from '../../metrics/metrics';
/**
* command
*
* @export
* @interface ICommand
*/
export interface ICommand {
/**
* execute the command
* @param args
*/
executeAsync<T>(...args: any[]): Promise<T>;
/**
* execution result
*/
status: ExecutionResult;
}
/**
*
*
* @export
* @abstract
* @class AbstractCommand
* @template T
*/
export declare abstract class AbstractCommand<T> {
protected metrics: IMetrics;
protected customTags: string;
/**
*
*
* @type {RequestContext}
*/
requestContext: RequestContext;
/**
* Components container
*
* @readonly
*
* @memberOf AbstractCommand
*/
readonly container: IContainer;
/**
* Creates an instance of AbstractCommand.
*
* @param {IContainer} container
* @param {any} providerFactory
*/
constructor(container: IContainer);
protected setMetricsTags(...args: Array<string>): void;
/**
* execute command
* @protected
* @abstract
* @param {any} args
* @returns {Promise<T>}
*/
abstract runAsync(...args: any[]): Promise<T>;
}