Files
keep/src/modes/server/api/mod.rs
Andrew Phillips 324e109c57 fix: add missing .into() call to convert SwaggerUi to Router in add_docs_routes
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
2025-08-13 10:03:56 -03:00

61 lines
1.8 KiB
Rust

pub mod item;
pub mod status;
use axum::{
routing::get,
Router,
};
use crate::modes::server::common::AppState;
use utoipa::OpenApi;
use utoipa_swagger_ui::SwaggerUi;
#[derive(OpenApi)]
#[openapi(
paths(
status::handle_status,
item::handle_list_items,
item::handle_post_item,
item::handle_delete_item,
item::handle_get_item_latest,
item::handle_get_item_latest_meta,
item::handle_get_item_latest_content,
item::handle_get_item,
item::handle_get_item_meta,
item::handle_get_item_content,
),
components(
schemas(
crate::common::status::StatusInfo,
crate::modes::server::common::ItemInfo,
)
),
tags(
(name = "status", description = "Status API endpoints"),
(name = "items", description = "Item management API endpoints")
)
)]
struct ApiDoc;
pub fn add_routes(router: Router<AppState>) -> Router<AppState> {
router
// Status endpoints
.route("/api/status", get(status::handle_status))
// Item endpoints
.route("/api/item/", get(item::handle_list_items).post(item::handle_post_item))
.route("/api/item/latest", get(item::handle_get_item_latest))
.route("/api/item/latest/meta", get(item::handle_get_item_latest_meta))
.route("/api/item/latest/content", get(item::handle_get_item_latest_content))
.route("/api/item/:id", get(item::handle_get_item).delete(item::handle_delete_item))
.route("/api/item/:id/meta", get(item::handle_get_item_meta))
.route("/api/item/:id/content", get(item::handle_get_item_content))
}
pub fn add_docs_routes(router: Router<AppState>) -> Router<AppState> {
router
.merge(SwaggerUi::new("/swagger-ui")
.url("/api-docs/openapi.json", ApiDoc::openapi())
.into())
}