use super::handlers::{get_gacha_claim_by_id, post_create_gacha_claim}; use crate::gacha_claims::application::GachaClaimServiceImpl; use crate::gacha_claims::domain::GachaClaimService; use crate::gacha_claims::infrastructure::persistence::PostgresGachaClaimRepository; use axum::{ Extension, Router, routing::{get, post}, }; use sea_orm::DatabaseConnection; use std::sync::Arc; fn build_service( db: DatabaseConnection, state: std::sync::Arc, ) -> Arc { let repo = Arc::new(PostgresGachaClaimRepository::new(db, state)); Arc::new(GachaClaimServiceImpl::new(repo)) } pub fn gacha_claim_router( db: DatabaseConnection, state: std::sync::Arc, ) -> Router { let service = build_service(db, state); Router::new() .route("/detail/{id}", get(get_gacha_claim_by_id)) .route("/create", post(post_create_gacha_claim)) .layer(Extension(service)) }