use axum::Router;
use std::sync::Arc;
use super::{
booth_category_handler::create_booth_category_routes,
booth_handler::create_booth_read_routes,
type_booth_handler::create_type_booth_routes,
booth_booking_handler::create_booth_booking_read_routes,
event_handler::create_event_read_routes,
event_type_handler::create_event_type_routes,
lead_provenance_handler::create_lead_provenance_read_routes,
lead_provenance_registration_handler::create_lead_provenance_registration_read_routes,
lead_request_handler::create_lead_request_read_routes,
lead_rule_handler::create_lead_rule_read_routes,
lead_rule_predicate_handler::create_lead_rule_predicate_read_routes,
mail_handler::create_mail_read_routes,
mail_registration_handler::create_mail_registration_routes,
mail_slot_handler::create_mail_slot_routes,
question_handler::create_question_read_routes,
question_answer_handler::create_question_answer_routes,
registration_question_handler::create_registration_question_routes,
registration_handler::create_registration_read_routes,
registration_answer_handler::create_registration_answer_routes,
slot_handler::create_slot_routes,
stage_handler::create_stage_routes,
tag_category_handler::create_tag_category_routes,
tag_handler::create_tag_routes,
ticket_handler::create_ticket_routes,
type_mail_handler::create_type_mail_routes,
};
use crate::application::service::{
BoothCategoryService,
BoothService,
TypeBoothService,
BoothBookingService,
EventService,
EventTypeService,
LeadProvenanceService,
LeadProvenanceRegistrationService,
LeadRequestService,
LeadRuleService,
LeadRulePredicateService,
MailService,
MailRegistrationService,
MailSlotService,
QuestionService,
QuestionAnswerService,
RegistrationQuestionService,
RegistrationService,
RegistrationAnswerService,
SlotService,
StageService,
TagCategoryService,
TagService,
TicketService,
TypeMailService,
};
pub struct HttpServices {
pub booth_category: Arc<BoothCategoryService>,
pub booth: Arc<BoothService>,
pub type_booth: Arc<TypeBoothService>,
pub booth_booking: Arc<BoothBookingService>,
pub event: Arc<EventService>,
pub event_type: Arc<EventTypeService>,
pub lead_provenance: Arc<LeadProvenanceService>,
pub lead_provenance_registration: Arc<LeadProvenanceRegistrationService>,
pub lead_request: Arc<LeadRequestService>,
pub lead_rule: Arc<LeadRuleService>,
pub lead_rule_predicate: Arc<LeadRulePredicateService>,
pub mail: Arc<MailService>,
pub mail_registration: Arc<MailRegistrationService>,
pub mail_slot: Arc<MailSlotService>,
pub question: Arc<QuestionService>,
pub question_answer: Arc<QuestionAnswerService>,
pub registration_question: Arc<RegistrationQuestionService>,
pub registration: Arc<RegistrationService>,
pub registration_answer: Arc<RegistrationAnswerService>,
pub slot: Arc<SlotService>,
pub stage: Arc<StageService>,
pub tag_category: Arc<TagCategoryService>,
pub tag: Arc<TagService>,
pub ticket: Arc<TicketService>,
pub type_mail: Arc<TypeMailService>,
}
pub fn configure_routes(services: HttpServices) -> Router {
Router::new()
.merge(create_booth_category_routes(services.booth_category))
.merge(create_booth_read_routes(services.booth))
.merge(create_type_booth_routes(services.type_booth))
.merge(create_booth_booking_read_routes(services.booth_booking))
.merge(create_event_read_routes(services.event))
.merge(create_event_type_routes(services.event_type))
.merge(create_lead_provenance_read_routes(services.lead_provenance))
.merge(create_lead_provenance_registration_read_routes(services.lead_provenance_registration))
.merge(create_lead_request_read_routes(services.lead_request))
.merge(create_lead_rule_read_routes(services.lead_rule))
.merge(create_lead_rule_predicate_read_routes(services.lead_rule_predicate))
.merge(create_mail_read_routes(services.mail))
.merge(create_mail_registration_routes(services.mail_registration))
.merge(create_mail_slot_routes(services.mail_slot))
.merge(create_question_read_routes(services.question))
.merge(create_question_answer_routes(services.question_answer))
.merge(create_registration_question_routes(services.registration_question))
.merge(create_registration_read_routes(services.registration))
.merge(create_registration_answer_routes(services.registration_answer))
.merge(create_slot_routes(services.slot))
.merge(create_stage_routes(services.stage))
.merge(create_tag_category_routes(services.tag_category))
.merge(create_tag_routes(services.tag))
.merge(create_ticket_routes(services.ticket))
.merge(create_type_mail_routes(services.type_mail))
}
pub mod individual {
use super::*;
pub fn booth_category_routes(service: Arc<BoothCategoryService>) -> Router {
create_booth_category_routes(service)
}
pub fn booth_routes(service: Arc<BoothService>) -> Router {
create_booth_read_routes(service)
}
pub fn type_booth_routes(service: Arc<TypeBoothService>) -> Router {
create_type_booth_routes(service)
}
pub fn booth_booking_routes(service: Arc<BoothBookingService>) -> Router {
create_booth_booking_read_routes(service)
}
pub fn event_routes(service: Arc<EventService>) -> Router {
create_event_read_routes(service)
}
pub fn event_type_routes(service: Arc<EventTypeService>) -> Router {
create_event_type_routes(service)
}
pub fn lead_provenance_routes(service: Arc<LeadProvenanceService>) -> Router {
create_lead_provenance_read_routes(service)
}
pub fn lead_provenance_registration_routes(service: Arc<LeadProvenanceRegistrationService>) -> Router {
create_lead_provenance_registration_read_routes(service)
}
pub fn lead_request_routes(service: Arc<LeadRequestService>) -> Router {
create_lead_request_read_routes(service)
}
pub fn lead_rule_routes(service: Arc<LeadRuleService>) -> Router {
create_lead_rule_read_routes(service)
}
pub fn lead_rule_predicate_routes(service: Arc<LeadRulePredicateService>) -> Router {
create_lead_rule_predicate_read_routes(service)
}
pub fn mail_routes(service: Arc<MailService>) -> Router {
create_mail_read_routes(service)
}
pub fn mail_registration_routes(service: Arc<MailRegistrationService>) -> Router {
create_mail_registration_routes(service)
}
pub fn mail_slot_routes(service: Arc<MailSlotService>) -> Router {
create_mail_slot_routes(service)
}
pub fn question_routes(service: Arc<QuestionService>) -> Router {
create_question_read_routes(service)
}
pub fn question_answer_routes(service: Arc<QuestionAnswerService>) -> Router {
create_question_answer_routes(service)
}
pub fn registration_question_routes(service: Arc<RegistrationQuestionService>) -> Router {
create_registration_question_routes(service)
}
pub fn registration_routes(service: Arc<RegistrationService>) -> Router {
create_registration_read_routes(service)
}
pub fn registration_answer_routes(service: Arc<RegistrationAnswerService>) -> Router {
create_registration_answer_routes(service)
}
pub fn slot_routes(service: Arc<SlotService>) -> Router {
create_slot_routes(service)
}
pub fn stage_routes(service: Arc<StageService>) -> Router {
create_stage_routes(service)
}
pub fn tag_category_routes(service: Arc<TagCategoryService>) -> Router {
create_tag_category_routes(service)
}
pub fn tag_routes(service: Arc<TagService>) -> Router {
create_tag_routes(service)
}
pub fn ticket_routes(service: Arc<TicketService>) -> Router {
create_ticket_routes(service)
}
pub fn type_mail_routes(service: Arc<TypeMailService>) -> Router {
create_type_mail_routes(service)
}
}