Files
imphnen-backend-service/imphnen-hackathon/src/v1/mod.rs
T
MythEclipse ece6499e2b feat: Implement hackathon registration module with controller, DTOs, repository, schema, and service
- Added registration_controller.rs to handle registration-related routes and logic.
- Created registration_dto.rs for data transfer objects related to registrations.
- Implemented registration_repository.rs for database interactions concerning registrations.
- Defined registration_schema.rs to represent the registration data structure.
- Developed registration_service.rs to encapsulate business logic for registrations.
- Established routes for registering, listing, updating, and checking in participants for hackathons.
- Added validation for registration requests and status updates.
- Included statistics retrieval for hackathon registrations.
2025-10-27 19:53:05 +07:00

43 lines
1.7 KiB
Rust

use axum::Router;
pub mod hackathon;
pub mod notifications;
pub mod registrations;
// Export the router function from hackathon module
pub use hackathon::hackathon_router;
pub use notifications::notifications_router;
pub use registrations::registrations_router;
// Main route constructor
pub fn hackathon_protected_routes() -> Router {
// Protected routes include the main hackathon router (create/update/delete) and
// a protected route for updating submission status.
use hackathon::hackathon_controller::{update_submission_status, get_admin_hackathon_results};
Router::new()
.nest("/hackathons", hackathon_router())
.route("/hackathons/submissions/{id}/status", axum::routing::patch(update_submission_status))
.route("/hackathons/{hackathon_id}/admin/results", axum::routing::get(get_admin_hackathon_results))
.merge(registrations_router())
.merge(notifications_router())
}
// Public routes for hackathons (only listing and retrieving)
pub fn hackathon_public_routes() -> Router {
use hackathon::hackathon_controller::{
list_hackathons,
get_hackathon,
search_hackathons,
get_user_hackathon_submissions,
get_public_hackathon_results,
};
Router::new()
.nest("/hackathons", Router::new()
.route("/", axum::routing::get(list_hackathons))
.route("/{id}", axum::routing::get(get_hackathon))
.route("/{id}/results", axum::routing::get(get_public_hackathon_results))
.route("/search", axum::routing::post(search_hackathons))
)
.route("/users/{user_id}/hackathon-submissions", axum::routing::get(get_user_hackathon_submissions))
}