@mbc-cqrs-serverless/task
Version:
long-running task
60 lines (59 loc) • 2.53 kB
TypeScript
import { DetailKey, DynamoDbService, IInvoke, SnsService } from '@mbc-cqrs-serverless/core';
import { ConfigService } from '@nestjs/config';
import { CreateTaskDto } from './dto/create-task.dto';
import { TaskEntity } from './entity/task.entity';
import { TaskListEntity } from './entity/task-list.entity';
import { TaskStatusEnum } from './enums/status.enum';
import { TaskQueueEvent } from './event';
import { StepFunctionTaskEvent } from './event/task.sfn.event';
import { ITaskService } from './interfaces/task-service.interface';
export declare class TaskService implements ITaskService {
private readonly dynamoDbService;
private readonly snsService;
private readonly config;
private readonly logger;
private readonly tableName;
private readonly alarmTopicArn;
constructor(dynamoDbService: DynamoDbService, snsService: SnsService, config: ConfigService);
createTask(dto: CreateTaskDto, options: {
invokeContext: IInvoke;
}): Promise<TaskEntity>;
createStepFunctionTask(dto: CreateTaskDto, options: {
invokeContext: IInvoke;
}): Promise<TaskEntity>;
createSubTask(event: TaskQueueEvent): Promise<TaskEntity[]>;
getAllSubTask(subTask: DetailKey): Promise<TaskEntity[]>;
updateStepFunctionTask(key: DetailKey, attributes?: Record<string, any>, status?: string, notifyId?: string): Promise<void>;
getTask(key: DetailKey): Promise<TaskEntity>;
updateStatus(key: DetailKey, status: string, attributes?: {
result?: any;
error?: any;
}, notifyId?: string): Promise<void>;
updateSubTaskStatus(key: DetailKey, status: string, attributes?: {
result?: any;
error?: any;
}, notifyId?: string): Promise<void>;
listItemsByPk(tenantCode: string, type?: string, options?: {
sk?: {
skExpression: string;
skAttributeValues: Record<string, string>;
skAttributeNames?: Record<string, string>;
};
startFromSk?: string;
limit?: number;
order?: 'asc' | 'desc';
}): Promise<TaskListEntity>;
publishAlarm(event: TaskQueueEvent | StepFunctionTaskEvent, errorDetails: any): Promise<void>;
formatTaskStatus(tasks: TaskEntity[]): Promise<{
subTaskCount: number;
subTaskSucceedCount: number;
subTaskFailedCount: number;
subTaskRunningCount: number;
subTasks: {
pk: string;
sk: string;
status: TaskStatusEnum;
}[];
}>;
private countTaskStatus;
}