diff options
| author | Tolmachev Igor <me@igorek.dev> | 2025-09-10 22:38:50 +0300 |
|---|---|---|
| committer | Tolmachev Igor <me@igorek.dev> | 2025-09-10 22:38:50 +0300 |
| commit | fbb9c79f8bfb59c792c5b8b2d8f1fffc838af42f (patch) | |
| tree | 1c12ea5baa9a8869ee1fb7259d8b52a62f82b3e6 /src | |
| parent | b9d75e22db72aabf47815e381aa6432c1bff3877 (diff) | |
| download | queue_server-fbb9c79f8bfb59c792c5b8b2d8f1fffc838af42f.tar.gz queue_server-fbb9c79f8bfb59c792c5b8b2d8f1fffc838af42f.zip | |
Edit main file structure
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/main.rs b/src/main.rs index 3b3f868..090fd75 100644 --- a/src/main.rs +++ b/src/main.rs | |||
| @@ -6,6 +6,7 @@ mod routers; | |||
| 6 | mod state; | 6 | mod state; |
| 7 | 7 | ||
| 8 | pub use auth::{JwtClaims, create_jwt, create_password, validate_jwt, validate_password}; | 8 | pub use auth::{JwtClaims, create_jwt, create_password, validate_jwt, validate_password}; |
| 9 | use axum::Router; | ||
| 9 | pub use error::{ApiError, ApiResult}; | 10 | pub use error::{ApiError, ApiResult}; |
| 10 | pub use response::{ErrorResponse, FailResponse, SuccessResponse}; | 11 | pub use response::{ErrorResponse, FailResponse, SuccessResponse}; |
| 11 | pub use state::AppState; | 12 | pub use state::AppState; |
| @@ -16,19 +17,21 @@ use tower_http::trace::TraceLayer; | |||
| 16 | use tracing::info; | 17 | use tracing::info; |
| 17 | use tracing_subscriber::EnvFilter; | 18 | use tracing_subscriber::EnvFilter; |
| 18 | 19 | ||
| 19 | async fn app_state() -> AppState { | 20 | fn env(name: &str) -> String { |
| 20 | let db_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set"); | 21 | std::env::var(name).expect(format!("{} must be set", name).as_str()) |
| 21 | let secret = std::env::var("SECRET").expect("SECRET must be set"); | ||
| 22 | |||
| 23 | AppState { | ||
| 24 | db: Database::connect(db_url).await.unwrap(), | ||
| 25 | secret: secret, | ||
| 26 | } | ||
| 27 | } | 22 | } |
| 28 | 23 | ||
| 29 | async fn listener() -> TcpListener { | 24 | async fn listener() -> TcpListener { |
| 30 | let addr = std::env::var("SERVER_BIND").expect("SERVER_BIND must be set"); | 25 | TcpListener::bind(env("SERVER_BIND")).await.unwrap() |
| 31 | TcpListener::bind(addr).await.unwrap() | 26 | } |
| 27 | |||
| 28 | async fn router() -> Router { | ||
| 29 | let db = Database::connect(env("DATABASE_URL")).await.unwrap(); | ||
| 30 | let secret = env("SECRET"); | ||
| 31 | |||
| 32 | routers::router() | ||
| 33 | .layer(TraceLayer::new_for_http()) | ||
| 34 | .with_state(AppState { db, secret }) | ||
| 32 | } | 35 | } |
| 33 | 36 | ||
| 34 | #[tokio::main] | 37 | #[tokio::main] |
| @@ -37,11 +40,8 @@ async fn main() { | |||
| 37 | .with_env_filter(EnvFilter::new("info,sqlx=warn,tower_http=debug")) | 40 | .with_env_filter(EnvFilter::new("info,sqlx=warn,tower_http=debug")) |
| 38 | .init(); | 41 | .init(); |
| 39 | 42 | ||
| 40 | let state = app_state().await; | ||
| 41 | let router = routers::router() | ||
| 42 | .layer(TraceLayer::new_for_http()) | ||
| 43 | .with_state(state); | ||
| 44 | let listener = listener().await; | 43 | let listener = listener().await; |
| 44 | let router = router().await; | ||
| 45 | 45 | ||
| 46 | info!( | 46 | info!( |
| 47 | "Start listening server on http://{:?}", | 47 | "Start listening server on http://{:?}", |
