diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index c53664a..3b3f868 100644 --- a/src/main.rs +++ b/src/main.rs | |||
| @@ -1,9 +1,30 @@ | |||
| 1 | mod auth; | ||
| 1 | mod error; | 2 | mod error; |
| 3 | mod extract; | ||
| 2 | mod response; | 4 | mod response; |
| 3 | mod routers; | 5 | mod routers; |
| 6 | mod state; | ||
| 4 | 7 | ||
| 8 | pub use auth::{JwtClaims, create_jwt, create_password, validate_jwt, validate_password}; | ||
| 9 | pub use error::{ApiError, ApiResult}; | ||
| 10 | pub use response::{ErrorResponse, FailResponse, SuccessResponse}; | ||
| 11 | pub use state::AppState; | ||
| 12 | |||
| 13 | use sea_orm::Database; | ||
| 5 | use tokio::net::TcpListener; | 14 | use tokio::net::TcpListener; |
| 6 | use tracing::{Level, info}; | 15 | use tower_http::trace::TraceLayer; |
| 16 | use tracing::info; | ||
| 17 | use tracing_subscriber::EnvFilter; | ||
| 18 | |||
| 19 | async fn app_state() -> AppState { | ||
| 20 | let db_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set"); | ||
| 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 | } | ||
| 7 | 28 | ||
| 8 | async fn listener() -> TcpListener { | 29 | async fn listener() -> TcpListener { |
| 9 | let addr = std::env::var("SERVER_BIND").expect("SERVER_BIND must be set"); | 30 | let addr = std::env::var("SERVER_BIND").expect("SERVER_BIND must be set"); |
| @@ -13,10 +34,13 @@ async fn listener() -> TcpListener { | |||
| 13 | #[tokio::main] | 34 | #[tokio::main] |
| 14 | async fn main() { | 35 | async fn main() { |
| 15 | tracing_subscriber::fmt() | 36 | tracing_subscriber::fmt() |
| 16 | .with_max_level(Level::DEBUG) | 37 | .with_env_filter(EnvFilter::new("info,sqlx=warn,tower_http=debug")) |
| 17 | .init(); | 38 | .init(); |
| 18 | 39 | ||
| 19 | let router = routers::router(); | 40 | let state = app_state().await; |
| 41 | let router = routers::router() | ||
| 42 | .layer(TraceLayer::new_for_http()) | ||
| 43 | .with_state(state); | ||
| 20 | let listener = listener().await; | 44 | let listener = listener().await; |
| 21 | 45 | ||
| 22 | info!( | 46 | info!( |
