asepharyana
966d86ff67
refactor: migrate thread/async/queue/scheduler infra to mytheclipse
...
Deploy Scraper / build-and-deploy (push) Canceled after 0s
- bootstrap: TracingLayer from mytheclipse-tracing (composed with scraper
env filter), RuntimeConfig::auto() thread logging, init job queue + cron.
- proxy_fetch: leader task via ::mytheclipse::spawn_io, gzip decompression
offloaded to ::mytheclipse::compute (sized rayon pool, panic-isolated),
bounded by new async fetch limiter (tokio Semaphore bridge).
- queue: new infrastructure/queue module over mytheclipse-queue
(InMemoryQueue + WorkerPool + BackpressureEnforcer) for repair jobs.
- scheduler: new infrastructure/scheduler.rs using mytheclipse::cron for
the daily 02:00 UTC image-cache cleanup.
- deps: add mytheclipse-queue + mytheclipse-tracing path deps; mytheclipse
-> full feature; rayon 1.12; keep path deps for unpublished crates.
- tests: infra_round2 runtime smoke tests (compute panic isolation,
spawn_io, backpressure admission, cron parse, queue roundtrip).
- Fix: local cache::mytheclipse bridge module shadowed the mytheclipse
crate name; use leading :: at spawn_io/compute call sites.
2026-08-30 19:40:01 +07:00
asepharyana
c7ffd29e79
refactor: migrate infra to mytheclipse crates (retry, cache, event, ratelimit, config)
...
Deploy Scraper / build-and-deploy (push) Canceled after 0s
Replace hand-rolled infrastructure with the custom mytheclipse library:
- retry (src/infrastructure/scraping/retry.rs): backoff crate -> mytheclipse
RetryConfig + retry() with retry_all predicate; same call-site helpers.
- cache (src/infrastructure/cache): deadpool raw AsyncCommands ->
mytheclipse_cache::RedisCache bridge (src/infrastructure/cache/mytheclipse.rs),
typed JSON wrapper keeps the Cache<'a> API used by use cases.
- events (src/events/bus.rs): custom broadcast pub/sub ->
mytheclipse_event InMemoryEventBus + TypedEventBus alias.
- ratelimit (src/presentation/middleware/ratelimit.rs): hand-rolled window ->
mytheclipse::RateLimiter token bucket.
- config (src/config/mod.rs): config crate -> mytheclipse_config ConfigLoader,
preserving env-only fallback (config files optional).
No route/API/Redis-key changes. mytheclipse-cache path-dep points at local
source (redis 0.32 aligned with deadpool). Removed backoff/config deps.
2026-08-30 18:53:00 +07:00
asepharyana
7640e66c76
chore: deny unused_mut, unreachable_code, trivial_casts, trivial_numeric_casts, explicit_outlives_requirements, unused_labels, unused_braces, noop_method_call, clippy::unnecessary_to_owned
2026-07-22 15:03:13 +07:00
asepharyana
96ce29b0f3
chore: set dead_code lint to deny
2026-07-22 14:52:19 +07:00
asepharyana
5c51ec895f
feat: remove croxy proxy and image cache features
2026-07-22 14:51:08 +07:00
asepharyana
4cd04410cf
chore: remove 17 unused Rust dependencies from scraper
2026-07-22 14:12:58 +07:00
asepharyana and Claude Opus 4.8
776fa828d8
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 >
2026-07-21 12:54:23 +07:00
asepharyana
80c96eaa42
chore: initial commit for asepharyana-hub-scraper
2026-07-09 22:07:03 +07:00