添加宏路由
This commit is contained in:
parent
1c12563baa
commit
f8a25bae5e
@ -17,6 +17,7 @@ pub struct Server {
|
||||
pub name: String,
|
||||
pub prefix_url: String,
|
||||
pub port: u32,
|
||||
pub debug: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
|
@ -27,9 +27,7 @@ where
|
||||
type State = S;
|
||||
|
||||
fn typed_route(self, handler: TypedHandler<Self::State>) -> Self {
|
||||
tracing::info!("start add router");
|
||||
let (path, method_router) = handler();
|
||||
tracing::info!("adding typed route: {} - {:?}", path, method_router);
|
||||
self.route(path, method_router)
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ extern crate syn;
|
||||
extern crate proc_macro;
|
||||
|
||||
use proc_macro::TokenStream; // 用于生成代码
|
||||
use syn::{parse_macro_input, parse_quote, DeriveInput}; // 用于解析宏输入
|
||||
use syn::{parse_macro_input, DeriveInput}; // 用于解析宏输入
|
||||
|
||||
mod responsable;
|
||||
mod route;
|
||||
@ -21,18 +21,27 @@ pub fn responsable(input: TokenStream) -> TokenStream {
|
||||
responsable::gen_responsable(input)
|
||||
}
|
||||
|
||||
// #[proc_macro_attribute]
|
||||
// pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
// route::gen_route(attr, item)
|
||||
// // item
|
||||
// }
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_route(attr, item)
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn get(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_get_route(attr, item)
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn post(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_post_route(attr, item)
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn put(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_put_route(attr, item)
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn delete(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_delete_route(attr, item)
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn option(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
route::gen_option_route(attr, item)
|
||||
}
|
@ -46,6 +46,7 @@ impl Args {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn gen_route(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
let args = parse_macro_input!(attr as Args);
|
||||
let func = parse_macro_input!(item as ItemFn);
|
||||
|
@ -1,11 +1,11 @@
|
||||
use domain::{dto::account::{AuthenticateGooleAccountReq, AuthenticateWithPassword, RefreshToken}, vo::account::{LoginAccount, RefreshTokenResult}};
|
||||
use library::{context::Context, model::response::ResResult, extractor::body_extractor::JsonBody};
|
||||
use macros::post;
|
||||
|
||||
use crate::service;
|
||||
|
||||
/// post: /account/google
|
||||
///
|
||||
/// google账号登录
|
||||
#[post("/account/google")]
|
||||
pub async fn authenticate_google(
|
||||
context: Context,
|
||||
JsonBody(req): JsonBody<AuthenticateGooleAccountReq>
|
||||
@ -13,9 +13,8 @@ pub async fn authenticate_google(
|
||||
service::account_service::authenticate_google(context, req).await
|
||||
}
|
||||
|
||||
/// post: /account/sys
|
||||
///
|
||||
/// 账号密码登录
|
||||
#[post("/account/sys")]
|
||||
pub async fn authenticate_with_password(
|
||||
context: Context,
|
||||
JsonBody(req): JsonBody<AuthenticateWithPassword>
|
||||
@ -23,9 +22,8 @@ pub async fn authenticate_with_password(
|
||||
service::sys_account_service::authenticate_with_password(context, req).await
|
||||
}
|
||||
|
||||
/// post: /account/refresh-token
|
||||
///
|
||||
/// 刷新token
|
||||
#[post("/account/refresh-token")]
|
||||
pub async fn refresh_token(
|
||||
context: Context,
|
||||
JsonBody(refresh_token): JsonBody<RefreshToken>
|
||||
|
@ -8,13 +8,12 @@ use library::extractor::path_extractor::PathVar;
|
||||
use library::model::response::ResResult;
|
||||
use library::extractor::body_extractor::JsonBody;
|
||||
use library::extractor::query_extractor::QueryParams;
|
||||
use macros::get;
|
||||
use macros::{get, post};
|
||||
|
||||
use crate::service;
|
||||
|
||||
/// post: /feedback
|
||||
///
|
||||
/// 添加反馈信息
|
||||
#[post("/feedback")]
|
||||
pub async fn add_feedback(
|
||||
context: Context,
|
||||
JsonBody(req): JsonBody<FeedbackAdd>,
|
||||
@ -22,9 +21,8 @@ pub async fn add_feedback(
|
||||
service::feedback_service::add_feedback(context, req).await
|
||||
}
|
||||
|
||||
/// get: /feedback
|
||||
///
|
||||
/// 获取反馈信息列表
|
||||
#[get("/feedback")]
|
||||
pub async fn get_feedback_list_by_page(
|
||||
context: Context,
|
||||
QueryParams(page_params): QueryParams<PageParams>,
|
||||
@ -37,7 +35,6 @@ pub async fn get_feedback_list_by_page(
|
||||
.await
|
||||
}
|
||||
|
||||
// #[route(get, "/feedback/:page/:pageSize")]
|
||||
#[get("/feedback/:page/:pageSize")]
|
||||
pub async fn get_feedback_list(
|
||||
context: Context,
|
||||
|
@ -1,48 +1,16 @@
|
||||
use axum::{routing::{get, post, MethodRouter}, Router};
|
||||
use axum::Router;
|
||||
use library::typed_router::TypedRouter;
|
||||
|
||||
pub mod account_controller;
|
||||
pub mod feedback_controller;
|
||||
|
||||
pub fn init() -> Router {
|
||||
// let a = feedback_controller::get_feedback_list;
|
||||
|
||||
// axum::routing::method_routing::MethodRouter::new()
|
||||
|
||||
|
||||
let router = Router::new()
|
||||
.route(
|
||||
"/account/google",
|
||||
post(account_controller::authenticate_google),
|
||||
)
|
||||
.route(
|
||||
"/account/sys",
|
||||
post(account_controller::authenticate_with_password),
|
||||
)
|
||||
.route(
|
||||
"/account/refresh-token",
|
||||
post(account_controller::refresh_token)
|
||||
)
|
||||
.route(
|
||||
"/feedback",
|
||||
post(feedback_controller::add_feedback)
|
||||
.get(feedback_controller::get_feedback_list_by_page)
|
||||
)
|
||||
.typed_route(route)
|
||||
// .typed_route(feedback_controller::get_feedback_list)
|
||||
// .merge(feedback_controller::get_feedback_list::route())
|
||||
// .typed_route(route)
|
||||
// .route(
|
||||
// "/feedback/:page/:pageSize",
|
||||
// get(feedback_controller::get_feedback_list)
|
||||
// )
|
||||
;
|
||||
return router;
|
||||
Router::new()
|
||||
.typed_route(account_controller::authenticate_google)
|
||||
.typed_route(account_controller::authenticate_with_password)
|
||||
.typed_route(account_controller::refresh_token)
|
||||
.typed_route(feedback_controller::add_feedback)
|
||||
.typed_route(feedback_controller::get_feedback_list_by_page)
|
||||
.typed_route(feedback_controller::get_feedback_list)
|
||||
}
|
||||
|
||||
fn route() -> (&'static str, MethodRouter) {
|
||||
pub async fn route() -> String {
|
||||
return "hello world".to_string();
|
||||
}
|
||||
("/feedback1", axum::routing::get(route))
|
||||
}
|
@ -7,6 +7,6 @@ pub fn get_tasks() -> Vec<Task> {
|
||||
vec!(Task {
|
||||
name: "google_iap".to_string(),
|
||||
job: Box::new(google_tasks::xxx_task),
|
||||
trigger: "0 0/1 * * * ?".to_string(),
|
||||
trigger: "0 0 0/1 * * ?".to_string(),
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue
Block a user