diff --git a/src/common/status.rs b/src/common/status.rs index 7fce004..18c1caa 100644 --- a/src/common/status.rs +++ b/src/common/status.rs @@ -1,5 +1,6 @@ use std::path::PathBuf; use strum::IntoEnumIterator; +use utoipa::ToSchema; use crate::compression_engine; use crate::compression_engine::COMPRESSION_PROGRAMS; @@ -8,20 +9,20 @@ use crate::compression_engine::program::CompressionEngineProgram; use crate::meta_plugin::MetaPluginType; use crate::meta_plugin; -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct StatusInfo { pub paths: PathInfo, pub compression: Vec, pub meta_plugins: Vec, } -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct PathInfo { pub data: String, pub database: String, } -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct CompressionInfo { #[serde(rename = "type")] pub compression_type: String, @@ -32,7 +33,7 @@ pub struct CompressionInfo { pub decompress: String, } -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct MetaPluginInfo { pub meta_name: String, pub found: bool, diff --git a/src/modes/server/api/mod.rs b/src/modes/server/api/mod.rs index 2d1eef3..85810cd 100644 --- a/src/modes/server/api/mod.rs +++ b/src/modes/server/api/mod.rs @@ -27,12 +27,12 @@ use utoipa_swagger_ui::SwaggerUi; components( schemas( crate::modes::server::common::ApiResponse, - crate::modes::server::common::ApiResponse>, - crate::modes::server::common::ApiResponse, - crate::modes::server::common::ApiResponse>, + crate::modes::server::common::ApiResponse>, + crate::modes::server::common::ApiResponse, + crate::modes::server::common::ApiResponse>, crate::modes::server::common::ApiResponse<()>, crate::modes::server::api::status::StatusInfo, - crate::modes::server::api::item::ItemInfo, + crate::modes::server::common::ItemInfo, ) ), tags( diff --git a/src/modes/server/docs.rs b/src/modes/server/docs.rs index a362579..bc5ef88 100644 --- a/src/modes/server/docs.rs +++ b/src/modes/server/docs.rs @@ -1,64 +1,3 @@ -use axum::response::{Html, Json}; -use serde_json::json; -use serde_json::Value; - -use crate::modes::server::common::AppState; -use axum::{ - routing::get, - Router, -}; - -pub async fn handle_openapi() -> Json { - let openapi_spec = json!({ - "openapi": "3.0.0", - "info": { - "title": "Keep API", - "version": "1.0.0", - "description": "REST API for the Keep data storage system" - }, - "servers": [ - { - "url": "/", - "description": "Local server" - } - ], - "components": { - "securitySchemes": { - "bearerAuth": { - "type": "http", - "scheme": "bearer" - } - }, - "schemas": { - "ItemInfo": { - "type": "object", - "properties": { - "id": {"type": "integer"}, - "ts": {"type": "string", "format": "date-time"}, - "size": {"type": "integer", "nullable": true}, - "compression": {"type": "string"}, - "tags": {"type": "array", "items": {"type": "string"}}, - "metadata": {"type": "object"} - } - }, - "StatusInfo": { - "type": "object", - "properties": { - "version": {"type": "string"}, - "database_path": {"type": "string"}, - "data_directory": {"type": "string"}, - "compression_engines": {"type": "array", "items": {"type": "string"}}, - "meta_plugins": {"type": "array", "items": {"type": "string"}} - } - } - } - }, - "security": [{"bearerAuth": []}], - "paths": {} - }); - - Json(openapi_spec) -} pub async fn handle_swagger_ui() -> Html<&'static str> { let html = r#"