import {
  ALL,
  Body,
  Get,
  Inject,
  Post,
  Provide,
  Query,
} from '@midwayjs/decorator';
import { CoolController, BaseController } from 'midwayjs-cool-core';
import { TaskInfoEntity } from '../../entity/info';
import { TaskInfoService } from '../../service/info';

/**
 * 任务
 */
@Provide()
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'page'],
  entity: TaskInfoEntity,
  service: TaskInfoService,
  pageQueryOp: {
    fieldEq: ['status', 'type'],
  },
})
export class TaskInfoController extends BaseController {
  @Inject()
  taskInfoService: TaskInfoService;

  /**
   * 手动执行一次
   */
  @Post('/once')
  async once(@Body() id: number) {
    await this.taskInfoService.once(id);
    this.ok();
  }

  /**
   * 暂停任务
   */
  @Post('/stop')
  async stop(@Body() id: number) {
    await this.taskInfoService.stop(id);
    this.ok();
  }

  /**
   * 开始任务
   */
  @Post('/start')
  async start(@Body() id: number, @Body() type: number) {
    await this.taskInfoService.start(id, type);
    this.ok();
  }

  /**
   * 日志
   */
  @Get('/log')
  async log(@Query(ALL) params: any) {
    return this.ok(await this.taskInfoService.log(params));
  }
}
