refactor: DDD/CQRS architecture, unified crate layout

- crates: common→application, api→presentation, infrastructure/*→adapters/*
- new crates: api-types, infra-wiring
- domain: errors/, models/, value_objects/, ports/, services/
- application: CQRS use cases (songs/, tabs/) w/ commands, queries, deps
- unified DomainError replaces RepositoryError
- workspace deps, unused dep cleanup
- fix: parse plain-text chord lines (UG drops spans mid-song)
- tests extracted to separate modules (tests/ dirs)
This commit is contained in:
2026-07-11 21:02:10 +02:00
parent a520251dab
commit d13df586dd
74 changed files with 1493 additions and 1076 deletions

View File

@@ -1,27 +1,37 @@
[workspace]
members = [
"crates/api",
"crates/common",
"crates/adapters/sqlite",
"crates/adapters/ug-parser",
"crates/api-types",
"crates/application",
"crates/domain",
"crates/infrastructure/persistence",
"crates/infrastructure/ug-parser",
"crates/infra-wiring",
"crates/presentation",
]
resolver = "2"
[workspace.dependencies]
anyhow = "1.0.102"
reqwest = "0.13.2"
tokio = { version = "1.51.0", features = ["full"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
anyhow = "1.0.102"
thiserror = "2.0.18"
tokio = { version = "1.51.0", features = ["full"] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
async-trait = "0.1.89"
uuid = { version = "1.23.0", features = ["v4", "serde"] }
rand = "0.10.0"
sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "sqlite", "uuid", "macros"] }
async-trait = "0.1.89"
reqwest = "0.13.2"
scraper = "0.23"
sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "sqlite", "uuid", "macros"] }
axum = { version = "0.8.8", features = ["macros"] }
domain = { path = "crates/domain" }
application = { path = "crates/application" }
api-types = { path = "crates/api-types" }
infra-wiring = { path = "crates/infra-wiring" }
sqlite = { path = "crates/adapters/sqlite" }
ug-parser = { path = "crates/adapters/ug-parser" }
[profile.release]
strip = true