diff options
Diffstat (limited to 'src/handlers/mod.rs')
| -rw-r--r-- | src/handlers/mod.rs | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs deleted file mode 100644 index 3235f24..0000000 --- a/src/handlers/mod.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::sync::Arc; -use tokio::sync::Mutex; - -use axum::extract::DefaultBodyLimit; -use axum::middleware::{self}; -use axum::routing::{delete, get, post}; -use axum::Router; -use sqlx::SqlitePool; -use tower_http::add_extension::AddExtensionLayer; -use tower_http::services::ServeDir; - -use admin::{admin_healthcheck, admin_middleware, delete_story, generate_token, upload_story}; -use frontend_builder::home; - -use crate::db::story::Story; - -use self::admin::{get_products, get_stories}; -use self::frontend_builder::build_page; - -mod admin; -pub mod frontend_builder; - -#[derive(Debug, Clone)] -pub struct ApiContext { - pool: SqlitePool, -} - -#[derive(Clone)] -struct AppState { - admin_token: Arc<Mutex<String>>, -} - -pub async fn router(pool: SqlitePool) -> Router { - let state = AppState { - admin_token: Arc::new(Mutex::new(generate_token())), - }; - - Router::new() - .route("/admin/story/:story_id", delete(delete_story)) - .route("/admin/story", post(upload_story).get(get_stories)) - .route("/admin/product", get(get_products)) - .route("/admin", get(admin_healthcheck)) - .layer(middleware::from_fn_with_state( - state.clone(), - admin_middleware, - )) - .with_state(state) - .route("/", get(home)) - .route("/stories", get(build_page::<Story>)) - .nest_service("/static", ServeDir::new("static")) - .layer(DefaultBodyLimit::max(1074000000)) - .layer(AddExtensionLayer::new(ApiContext { pool })) -} |
