//// Application router that maps HTTP requests to handler functions. //// //// This module defines the URL routing table for the application's API endpoints. //// It uses path-based routing to delegate requests to specific handler modules //// for processing. //// //// All requests are processed through the web middleware pipeline before routing. //// Unmatched routes return a 404 Not Found response. import app/domain/admin/admin_update_user import app/domain/admin/setup_first_admin import app/domain/brigade/delete_brigade import app/domain/brigade/get_all_brigades import app/domain/brigade/get_brigade_members import app/domain/brigade/register_new_brigade import app/domain/brigade/update_brigade_status import app/domain/dashboard import app/domain/data_analysis/analysis_occurrence_volume import app/domain/notification/get_notification_preferences import app/domain/notification/update_notification_preferences import app/domain/occurrence/close_occurrence import app/domain/occurrence/delete_occurrence import app/domain/occurrence/get_ocurrences_by_applicant import app/domain/occurrence/register_new_occurrence import app/domain/occurrence/reopen_occurrence import app/domain/role/get_role_list import app/domain/user/delete_user import app/domain/user/get_all_user_profiles import app/domain/user/get_crew_members import app/domain/user/get_user_profile import app/domain/user/login import app/domain/user/signup import app/domain/user/update_user_password import app/domain/user/update_user_profile import app/domain/user/update_user_status import app/web import app/web/context.{type Context} import wisp /// 󱂇 Main request router - matches HTTP methods and paths to appropriate handlers /// All routes pass through middleware first for common processing pub fn handle_request( request request: wisp.Request, ctx ctx: Context, ) -> wisp.Response { use request <- web.middleware(request:, context: ctx) case wisp.path_segments(request) { //  Security routes ------------------------------------------------- ["user", "login"] -> login.handle_request(request:, ctx:) ["user", "password"] -> update_user_password.handle_request(request:, ctx:) //  Admin routes --------------------------------------------------------- ["admin", "setup"] -> setup_first_admin.handle_request(request:, ctx:) ["admin", "signup"] -> signup.handle_request(request:, ctx:) ["admin", "users"] -> get_all_user_profiles.handle_request(request:, ctx:) ["admin", "users", id, "update"] -> admin_update_user.handle_request(request:, ctx:, id:) ["admin", "users", id, "delete"] -> delete_user.handle_request(request:, ctx:, id:) ["admin", "users", id, "status"] -> update_user_status.handle_request(request:, ctx:, id:) ["admin", "brigade"] -> get_all_brigades.handle_request(request:, ctx:) ["admin", "brigade", "new"] -> register_new_brigade.handle_request(request:, ctx:) ["admin", "brigade", id, "status"] -> update_brigade_status.handle_request(request:, ctx:, id:) ["admin", "brigade", id] -> delete_brigade.handle_request(request:, ctx:, id:) // 󰨇 Dashboard stats ------------------------------------------------------ ["dashboard", "stats"] -> dashboard.handle_request(request:, ctx:) // 󰕮 Data analysis routes ["analysis", "occurrence"] -> analysis_occurrence_volume.handle_request(request:, ctx:) //  User data routes ----------------------------------------------------- ["user", id, "occurrences"] -> get_ocurrences_by_applicant.handle_request(request:, ctx:, id:) ["user", "profile"] -> get_user_profile.handle_request(request:, ctx:) ["user", "profile", "update"] -> update_user_profile.handle_request(request:, ctx:) ["user", id, "crew_members"] -> get_crew_members.handle_request(request:, ctx:, id:) //  Notification routes -------------------------------------------------- ["user", "notification_preferences"] -> get_notification_preferences.handle_request(request:, ctx:) ["user", "notification_preferences", "update"] -> update_notification_preferences.handle_request(request:, ctx:) // 󰞏 Occurrence routes ---------------------------------------------------- ["occurrence", "new"] -> register_new_occurrence.handle_request(request:, ctx:) ["occurrence", id] -> delete_occurrence.handle_request(request:, ctx:, id:) ["occurrence", "close", id] -> close_occurrence.handle_request(request:, ctx:, id:) ["occurrence", "reopen", id] -> reopen_occurrence.handle_request(request:, ctx:, id:) // 󰢫 Brigade routes ------------------------------------------------------- ["brigade", id, "members"] -> get_brigade_members.handle_request(request:, ctx:, id:) //  Role routes ---------------------------------------------------------- ["user", "roles"] -> get_role_list.handle_request(request:, ctx:) // Fallback routes --------------------------------------------------------- [] -> wisp.ok() |> wisp.html_body("

🌠

") _ -> wisp.not_found() } }