feat: full clean architecture refactor — domain → application → infrastructure → presentation
- Restructure from Modular MVC to Clean Architecture with 4 strict layers - Domain: entities (anime/komik/proxy), Repository traits, typed errors - Application: use case classes with proper error propagation - Infrastructure: repository impls, parsers, Redis cache, HTTP/scraping, browser - Presentation: Axum handlers, DTOs, AppState, router, AppError+IntoResponse - Migrate all parsers (otakudesu, alqanime, komik) to native infra implementations - Replace once_cell::sync::Lazy/OnceCell with std::sync::LazyLock/OnceLock - Remove 150+ old files in modules/ and shared/ directories - Remove once_cell from Cargo.toml dependencies - Fix test/debug binaries to use new import paths - Zero new clippy warnings Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
80c96eaa42
commit
776fa828d8
@@ -0,0 +1,28 @@
|
||||
//! Application state shared across all handlers.
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use deadpool_redis::Pool;
|
||||
use sea_orm::DatabaseConnection;
|
||||
|
||||
use crate::events::bus::EventBus;
|
||||
use crate::infrastructure::repository::SeaOrmImageCacheRepository;
|
||||
|
||||
/// Shared application state injected into every handler via Axum State.
|
||||
///
|
||||
/// Contains the infrastructure dependencies that handlers and use cases
|
||||
/// need to serve requests.
|
||||
#[derive(Clone)]
|
||||
pub struct AppState {
|
||||
pub redis_pool: Pool,
|
||||
pub db: Arc<DatabaseConnection>,
|
||||
pub image_processing_semaphore: Arc<tokio::sync::Semaphore>,
|
||||
pub event_bus: Arc<EventBus>,
|
||||
pub image_cache_repo: Arc<SeaOrmImageCacheRepository>,
|
||||
}
|
||||
|
||||
impl AppState {
|
||||
pub fn sea_orm(&self) -> &DatabaseConnection {
|
||||
&self.db
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user