use axum::{Form, Router}; use axum::extract::Query; use axum::routing::get; use crate::common::{response::HtmlResponse, Result}; use crate::common::response::{redirect, RedirectResponse}; use crate::common::template::render; use crate::form::ArticleForm; use crate::param::ArticleParams; use crate::service::article::ArticleService; pub fn init_router() -> Router { Router::new() .route("/", get(index)) .route("/add", get(add_ui).post(add)) .route("/tags", get(list_with_tags)) } pub async fn index(Query(params): Query) -> Result { let handler_name = "article/index"; let tpl = ArticleService::index(handler_name, params).await?; render(tpl, handler_name) } pub async fn add_ui() -> Result { let handler_name = "article/add_ui"; let tpl = ArticleService::add_ui(handler_name).await?; render(tpl, handler_name) } pub async fn add(Form(frm): Form) -> Result { let handler_name = "article/add"; ArticleService::add(handler_name, frm).await?; redirect("/article?msg=文章添加成功") } pub async fn list_with_tags() -> Result { let handler_name = "article/list_with_tags"; ArticleService::list_with_tags(handler_name).await }