
package com.pavis.admin.schedule.api;

import com.aizuda.snailjob.common.core.model.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import com.pavis.admin.schedule.config.FeignRequestInterceptor;
import com.pavis.admin.schedule.model.JobPageResult;
import com.pavis.admin.schedule.model.query.JobQuery;
import com.pavis.admin.schedule.model.req.JobReq;
import com.pavis.admin.schedule.model.req.JobStatusReq;
import com.pavis.admin.schedule.model.req.JobTriggerReq;
import com.pavis.admin.schedule.model.resp.JobResp;

import java.util.List;
import java.util.Set;

/**
 * 任务 REST API
 *
 * 
 * 
 * @since 2024/6/25 18:20
 */
@FeignClient(value = "job", url = "${snail-job.server.api.url}", path = "/job", configuration = FeignRequestInterceptor.class)
public interface JobApi {

    /**
     * 分页查询列表
     *
     * @param query 查询条件
     * @return 响应信息
     */
    @GetMapping("/page/list")
    JobPageResult<List<JobResp>> page(@SpringQueryMap JobQuery query);

    /**
     * 新增
     *
     * @param req 请求参数
     * @return 响应信息
     */
    @PostMapping
    Result<Boolean> create(@RequestBody JobReq req);

    /**
     * 修改
     *
     * @param req 请求参数
     * @return 响应信息
     */
    @PutMapping
    Result<Boolean> update(@RequestBody JobReq req);

    /**
     * 修改状态
     *
     * @param req 请求参数
     * @return 响应信息
     */
    @PutMapping("/status")
    Result<Boolean> updateStatus(@RequestBody JobStatusReq req);

    /**
     * 删除
     *
     * @param ids ID 列表
     * @return 响应信息
     */
    @DeleteMapping("/ids")
    Result<Boolean> delete(@RequestBody Set<Long> ids);

    /**
     * 执行
     *
     * @param req 请求参数
     * @return 响应信息
     */
    @PostMapping("/trigger")
    Result<Boolean> trigger(@RequestBody JobTriggerReq req);
}
