ratchjob 0.2.1

一个rust实现的分布式任务调度平台服务。计划完全兼容xxl-job协议,然后再增强一些任务调度平台能力。
Documentation
use crate::app::model::{AppKey, AppManagerReq, AppManagerResult};
use crate::common::constant::DEFAULT_XXL_NAMESPACE;
use crate::common::model::ApiResult;
use crate::common::share_data::ShareData;
use crate::console::v1::ERROR_CODE_SYSTEM_ERROR;
use crate::openapi::v1::model::app_model::{AppQueryParam, NamespaceDto};
use actix_web::web::Data;
use actix_web::{web, HttpResponse, Responder};
use std::sync::Arc;

pub(crate) async fn query_app_instance_addrs(
    share_data: Data<Arc<ShareData>>,
    web::Query(param): web::Query<AppQueryParam>,
) -> impl Responder {
    let namespace = if let Some(namespace) = param.namespace {
        Arc::from(namespace)
    } else {
        DEFAULT_XXL_NAMESPACE.clone()
    };
    let app_key = AppKey::new(Arc::from(param.app_name.unwrap_or_default()), namespace);
    if let Ok(Ok(AppManagerResult::AppInstanceAddrs(addrs))) = share_data
        .app_manager
        .send(AppManagerReq::GetAppInstanceAddrs(app_key.clone()))
        .await
    {
        HttpResponse::Ok().json(ApiResult::success(Some(addrs)))
    } else {
        let error_msg = format!("query_app_instance_addrs error,app_key:{:?}", &app_key);
        log::error!("{}", &error_msg);
        HttpResponse::Ok().json(ApiResult::<()>::error(
            ERROR_CODE_SYSTEM_ERROR.to_string(),
            Some(error_msg),
        ))
    }
}

pub(crate) async fn query_namespace_list(share_data: Data<Arc<ShareData>>) -> impl Responder {
    if let Ok(Ok(AppManagerResult::NamespaceList(namespaces))) = share_data
        .app_manager
        .send(AppManagerReq::QueryNamespaceList)
        .await
    {
        let namespace_dtos: Vec<NamespaceDto> = namespaces
            .iter()
            .map(|ns| NamespaceDto {
                namespace: ns.to_string(),
                namespace_desc: ns.to_string(),
            })
            .collect();
        HttpResponse::Ok().json(ApiResult::success(Some(namespace_dtos)))
    } else {
        let error_msg = "query_namespace_list error".to_string();
        log::error!("{}", &error_msg);
        HttpResponse::Ok().json(ApiResult::<()>::error(
            ERROR_CODE_SYSTEM_ERROR.to_string(),
            Some(error_msg),
        ))
    }
}

pub(crate) async fn query_appname_all_list(share_data: Data<Arc<ShareData>>) -> impl Responder {
    if let Ok(Ok(AppManagerResult::AppNameList(app_names))) = share_data
        .app_manager
        .send(AppManagerReq::QueryAppNameList)
        .await
    {
        HttpResponse::Ok().json(ApiResult::success(Some(app_names)))
    } else {
        let error_msg = "query_appname_all_list error".to_string();
        log::error!("{}", &error_msg);
        HttpResponse::Ok().json(ApiResult::<()>::error(
            ERROR_CODE_SYSTEM_ERROR.to_string(),
            Some(error_msg),
        ))
    }
}