diff options
| author | Tolmachev Igor <me@igorek.dev> | 2025-09-14 23:27:25 +0300 |
|---|---|---|
| committer | Tolmachev Igor <me@igorek.dev> | 2025-09-14 23:27:25 +0300 |
| commit | 955598dce9aeb5626654c72b0ef94850123fa8ac (patch) | |
| tree | 4fb161c2e67fdc161ebbca5ced271b6e7724dc30 /src/main.rs | |
| parent | 39bf8397949ea2738ac3dfc934fcc3f07a6b0b66 (diff) | |
| download | queue_server-955598dce9aeb5626654c72b0ef94850123fa8ac.tar.gz queue_server-955598dce9aeb5626654c72b0ef94850123fa8ac.zip | |
Add openapi specs and docs
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 4ab5aeb..fe2589a 100644 --- a/src/main.rs +++ b/src/main.rs | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | mod api; | ||
| 1 | mod auth; | 2 | mod auth; |
| 2 | mod error; | 3 | mod error; |
| 3 | mod extract; | 4 | mod extract; |
| @@ -5,9 +6,10 @@ mod response; | |||
| 5 | mod routers; | 6 | mod routers; |
| 6 | mod state; | 7 | mod state; |
| 7 | 8 | ||
| 9 | pub use api::{AppOpenApi, tags}; | ||
| 8 | pub use auth::{JwtClaims, create_jwt, create_password, validate_jwt, validate_password}; | 10 | pub use auth::{JwtClaims, create_jwt, create_password, validate_jwt, validate_password}; |
| 9 | pub use error::{ApiError, ApiResult}; | 11 | pub use error::{ApiError, ClientError, ServerError}; |
| 10 | pub use response::{ErrorResponse, FailResponse, SuccessResponse}; | 12 | pub use response::{ApiResult, ErrorResponse, GlobalResponses, SuccessResponse}; |
| 11 | pub use state::AppState; | 13 | pub use state::AppState; |
| 12 | 14 | ||
| 13 | use axum::Router; | 15 | use axum::Router; |
| @@ -16,6 +18,7 @@ use tokio::net::TcpListener; | |||
| 16 | use tower_http::trace::TraceLayer; | 18 | use tower_http::trace::TraceLayer; |
| 17 | use tracing::info; | 19 | use tracing::info; |
| 18 | use tracing_subscriber::EnvFilter; | 20 | use tracing_subscriber::EnvFilter; |
| 21 | use utoipa_scalar::{Scalar, Servable}; | ||
| 19 | 22 | ||
| 20 | fn env(name: &str) -> String { | 23 | fn env(name: &str) -> String { |
| 21 | std::env::var(name).expect(format!("{} must be set", name).as_str()) | 24 | std::env::var(name).expect(format!("{} must be set", name).as_str()) |
| @@ -28,10 +31,12 @@ async fn listener() -> TcpListener { | |||
| 28 | async fn router() -> Router { | 31 | async fn router() -> Router { |
| 29 | let db = Database::connect(env("DATABASE_URL")).await.unwrap(); | 32 | let db = Database::connect(env("DATABASE_URL")).await.unwrap(); |
| 30 | let secret = env("SECRET"); | 33 | let secret = env("SECRET"); |
| 34 | let (router, api) = routers::router().split_for_parts(); | ||
| 31 | 35 | ||
| 32 | routers::router() | 36 | router |
| 33 | .layer(TraceLayer::new_for_http()) | 37 | .layer(TraceLayer::new_for_http()) |
| 34 | .with_state(AppState { db, secret }) | 38 | .with_state(AppState { db, secret }) |
| 39 | .merge(Scalar::with_url("/docs", api)) | ||
| 35 | } | 40 | } |
| 36 | 41 | ||
| 37 | #[tokio::main] | 42 | #[tokio::main] |
