1.4 KiB
1.4 KiB
mkv TODO
Done
- SQLite schema + pragmas + ReadPool + WriterHandle (
db.rs) - Config parsing with validation (
config.rs) - Error types with axum IntoResponse (
error.rs) - Consistent hash ring with virtual nodes + stability tests (
hasher.rs) - Volume HTTP client — key-as-path, no sidecar files (
volume.rs) - Health checker background task (
health.rs) - HTTP handlers with pure decision functions extracted (
server.rs) - CLI with clap subcommands (
main.rs) - Rebuild tool — recursive nginx autoindex walk (
rebuild.rs) - Rebalance tool with --dry-run (
rebalance.rs) - Integration tests — 8 tests against real nginx (Docker Compose)
- Unit tests — 17 tests (hasher, server pure fns, rebalance planning)
- Key-as-path simplification (removed content-addressed paths + .key sidecars)
Remaining
Worth doing
- Typed volume errors — replace
Stringerrors involume.rswith a proper enum - Unit tests for
db.rs— CRUD round-trip with in-memory SQLite - Graceful shutdown — drain in-flight requests, flush writer
Nice to have
- Metrics — request count, latency histograms, volume error rates
- Request ID / tracing spans — per-request trace context
- Config reload — SIGHUP to reload config without restart
- Rate limiting on list endpoint — prefix scan can be expensive