ratchjob 0.2.1

一个rust实现的分布式任务调度平台服务。计划完全兼容xxl-job协议,然后再增强一些任务调度平台能力。
Documentation
use crate::app::app_index::AppQueryParam;
use crate::app::model::{AppParam, RegisterType};
use crate::common::datetime_utils::now_second_u32;

use crate::common::model::UserSession;
use crate::common::namespace_util::get_namespace_by_option;
use serde::{Deserialize, Serialize};
use std::sync::Arc;

#[derive(Debug, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AppInfoParam {
    pub namespace: Option<Arc<String>>,
    pub app_name: Option<Arc<String>>,
    pub label: Option<Arc<String>>,
    pub register_type: Option<String>,
    pub instance_addrs: Option<Vec<Arc<String>>>,
}

impl AppInfoParam {
    pub fn to_param(self) -> AppParam {
        AppParam {
            app_name: self.app_name.unwrap_or_default(),
            namespace: get_namespace_by_option(&self.namespace),
            label: self.label,
            register_type: self.register_type.map(|s| RegisterType::from_str(&s)),
            instance_addrs: self.instance_addrs,
            last_modified_time: now_second_u32(),
        }
    }
}

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

impl AppQueryListRequest {
    pub fn to_param_with_session(self, session: &Arc<UserSession>) -> AppQueryParam {
        let limit = self.page_size.unwrap_or(0xffff_ffff);
        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;
        AppQueryParam {
            namespace: self.namespace,
            app_name: self.app_name,
            like_name: self.like_app_name,
            namespace_privilege: session.namespace_privilege.clone(),
            app_privilege: session.app_privilege.clone(),
            offset,
            limit,
        }
    }
}