Skip to content

Commit

Permalink
✨ 添加脱机蹲饼器配置信息接口
Browse files Browse the repository at this point in the history
  • Loading branch information
Goodjooy committed Jul 16, 2023
1 parent a94c189 commit 274a053
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 2 deletions.
9 changes: 8 additions & 1 deletion src/router/front_end/config/datasource.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
use axum::{routing::get, Router};
use axum::{
routing::{get, post},
Router,
};

use crate::router::ServerRoute;

Expand All @@ -7,4 +10,8 @@ pub struct ConfigDatasourceFrontend;
pub(super) fn datasource_router() -> ServerRoute {
Router::new()
.route("/list", get(ConfigDatasourceFrontend::datasource_list))
.route(
"/standalone-fetcher-config",
post(ConfigDatasourceFrontend::standalone_fetcher_config),
)
}
67 changes: 66 additions & 1 deletion src/serves/frontend/config/datasource/controllers.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
use axum::extract::{Path, State};
use bitmap_convert::{
base70::BitmapBase70Conv, vec_usize::BitmapVecUsizeConv,
};
use bitmaps::Bitmap;
use fetcher::{datasource_config::ToDatasource, ToFetcher};
use general_request_client::{client::RequestClient, traits::Requester};
use http::Method;
use orm_migrate::{
sql_connection::SqlDatabaseOperate,
sql_models::fetcher::datasource_config::models::model_datasource_config::FrontendDatasource,
};
use resp_result::rtry;
use resp_result::{resp_try, rtry};
use scheduler_notifier::SchedulerUrl;
use serde_json::{json, Value};
use tracing::instrument;
use url::Url;

use crate::{
router::ConfigDatasourceFrontend,
Expand All @@ -22,4 +32,59 @@ impl ConfigDatasourceFrontend {
))
.into()
}
#[instrument(skip(request_client))]
// #[axum_macros::debug_handler]
pub async fn standalone_fetcher_config(
Path(combine_id): Path<String>,
State(request_client): State<RequestClient>,
State(url): State<SchedulerUrl>,
) -> DatasourceRResult<Value> {
struct StandAloneFetcherConfigRequester {
url: SchedulerUrl,
bitmap: Vec<usize>,
}

impl Requester for StandAloneFetcherConfigRequester {
const METHOD: http::Method = Method::POST;

fn get_url(&self) -> Url {
self.url.take_url()
}
fn prepare_request<
B: general_request_client::traits::RequestBuilder,
>(
self, builder: B,
) -> Result<B::Request, B::Error> {
builder
.body(
json!({"datasource_id_list":self.bitmap})
.to_string()
.into_bytes(),
)
.build()
}
}

resp_try(async {
let bitmap = Bitmap::<256>::from_base_70(combine_id)
.map(|bitmap| bitmap.bitmap_to_usize())?;

let resp = request_client
.send_request(StandAloneFetcherConfigRequester {
url,
bitmap,
})
.await?;
#[derive(serde::Deserialize)]
struct ConfigPayload {
#[serde(rename = "code")]
_code: i32,
config: Value,
}
let ConfigPayload { config, .. } =
resp.json::<ConfigPayload>().await?;
Ok(config)
})
.await
}
}
2 changes: 2 additions & 0 deletions src/serves/frontend/config/datasource/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ error_generate! {

Query = QueryRejection
DatasourceOperate = DatasourceOperateError
Base70ConvBitmap = bitmap_convert::error::Error
RequestError = reqwest::Error
}

pub type DatasourceRResult<T> = RespResult<T, DatasourceError>;

0 comments on commit 274a053

Please sign in to comment.