ratchjob 0.2.1

一个rust实现的分布式任务调度平台服务。计划完全兼容xxl-job协议,然后再增强一些任务调度平台能力。
Documentation
use crate::job::model::job::{JobKey, JobTaskLogQueryParam};
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct JobTaskListRequest {
    pub job_id: Option<u64>,
    pub namespace: Option<String>,
    pub app_name: Option<String>,
    pub page_no: Option<usize>,
    pub page_size: Option<usize>,
}

impl JobTaskListRequest {
    pub fn to_param(self) -> JobTaskLogQueryParam {
        let limit = self.page_size.unwrap_or(10);
        let page_no = if self.page_no.unwrap_or(1) < 1 {
            1
        } else {
            self.page_no.unwrap_or(1)
        };
        let offset = (page_no - 1) * limit;
        JobTaskLogQueryParam {
            job_id: self.job_id.unwrap_or_default(),
            offset,
            limit,
            namespace: self.namespace,
            app_name: self.app_name,
        }
    }
}

#[derive(Debug, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct JobTaskHistoryRequest {
    pub job_id: Option<u64>,
    pub namespace: Option<String>,
    pub app_name: Option<String>,
    pub page_no: Option<usize>,
    pub page_size: Option<usize>,
}

impl JobTaskHistoryRequest {
    pub fn to_param(self) -> JobTaskLogQueryParam {
        let limit = self.page_size.unwrap_or(10);
        let page_no = if self.page_no.unwrap_or(1) < 1 {
            1
        } else {
            self.page_no.unwrap_or(1)
        };
        let offset = (page_no - 1) * limit;
        JobTaskLogQueryParam {
            job_id: self.job_id.unwrap_or_default(),
            offset,
            limit,
            namespace: self.namespace,
            app_name: self.app_name,
        }
    }
}

#[derive(Debug, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct JobKeyQueryRequest {
    pub namespace: Option<String>,
    pub app_name: Option<String>,
    pub key: Option<String>,
}

impl JobKeyQueryRequest {
    pub fn to_job_key(self) -> Option<JobKey> {
        let namespace = self.namespace?;
        let app_name = self.app_name?;
        let job_key = self.key?;

        if namespace.is_empty() || app_name.is_empty() || job_key.is_empty() {
            return None;
        }

        Some(JobKey::new(&namespace, &app_name, &job_key))
    }
}