refactor: split bootstrap factory into per-context service builders

This commit is contained in:
2026-05-31 18:28:57 +02:00
parent c16c9d4581
commit 5a4eb1e4f8
11 changed files with 345 additions and 248 deletions

View File

@@ -0,0 +1,35 @@
use std::sync::Arc;
use adapters_auth::{BcryptPasswordHasher, JwtTokenIssuer};
use adapters_postgres::{PgPool, PostgresUserRepository};
use application::identity::{GetProfileHandler, LoginUserHandler, RegisterUserHandler};
use domain::ports::TokenIssuer;
use presentation::state::IdentityHandlers;
pub struct IdentityServices {
pub handlers: IdentityHandlers,
pub token_issuer: Arc<dyn TokenIssuer>,
}
pub fn build(pool: &PgPool, jwt_secret: &str) -> IdentityServices {
let user_repo = Arc::new(PostgresUserRepository::new(pool.clone()));
let hasher = Arc::new(BcryptPasswordHasher);
let issuer: Arc<JwtTokenIssuer> = Arc::new(JwtTokenIssuer::new(jwt_secret));
let register = Arc::new(RegisterUserHandler::new(user_repo.clone(), hasher.clone()));
let login = Arc::new(LoginUserHandler::new(
user_repo.clone(),
hasher,
issuer.clone(),
));
let get_profile = Arc::new(GetProfileHandler::new(user_repo));
IdentityServices {
handlers: IdentityHandlers {
register,
login,
get_profile,
},
token_issuer: issuer,
}
}