Files
chat-api/src/routes/v1/mod.rs
T
LucasDLTG 81129d6c9c
CI / Rust CI (push) Successful in 1m33s
Publish & Deploy / Build and Push to Registry (push) Successful in 22s
Publish & Deploy / Deploy via SSH (push) Successful in 18s
feat: add metadata for api doc
2026-04-11 20:40:38 +02:00

32 lines
969 B
Rust

pub mod chat;
pub mod models;
use crate::docs::ApiDoc;
use crate::middlewares::auth::auth_middleware;
use crate::state::app_state::AppState;
use axum::{Json, Router, middleware, routing::get, routing::post};
use utoipa::OpenApi;
async fn openapi_json() -> Json<utoipa::openapi::OpenApi> {
Json(ApiDoc::openapi())
}
fn public_router() -> Router<AppState> {
Router::new().route("/docs.json", get(openapi_json))
}
pub fn protected_router() -> Router<AppState> {
Router::new()
.route("/models", get(models::list_models))
.route("/completions", post(chat::completions))
.route("/chat/completions", post(chat::chat_completions))
.route("/models/{model}/load", post(models::load_model))
.route("/models/{model}/unload", post(models::unload_model))
}
pub fn router() -> Router<AppState> {
Router::new()
.merge(public_router())
.merge(protected_router().layer(middleware::from_fn(auth_middleware)))
}