64eee3ed6d
Step 1 (Cargo + CLI): - add the `backup` feature to rusqlite (online backup API) - `--no-undo` flag (test-first) + help-banner entry Step 2 (snapshot store, src/undo.rs): - SnapshotStore: a persisted undo ring + redo stack under <project>/.snapshots/ (index.yaml + per-snapshot payload dirs) - hybrid whole-project snapshot: db via backup API + project.yaml / data/*.csv copied as files; restore is text-first, db-last (ADR-0015 §6 commit-db-last) - stage/finalize/discard, undo/redo (each snapshots current to keep the inverse possible), N=50 eviction, redo-cleared-on-new-work, orphan/staging cleanup, monotonic ids - 12 Tier-1 tests; adds a crate-visible persistence::utc_iso8601_now No worker wiring yet (step 3). 1674 passed / 0 failed / 1 ignored; clippy clean.
46 lines
1.4 KiB
TOML
46 lines
1.4 KiB
TOML
[package]
|
|
name = "rdbms-playground"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "A cross-platform TUI playground for learning relational databases."
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://github.com/sturm/rdbms-playground"
|
|
readme = "README.md"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.102"
|
|
base64 = "0.22.1"
|
|
crossterm = { version = "0.29.0", features = ["event-stream"] }
|
|
csv = "1.4.0"
|
|
directories = "6.0.0"
|
|
futures-util = "0.3.32"
|
|
gethostname = "1.1.0"
|
|
rand = "0.10.1"
|
|
ratatui = "0.30.0"
|
|
rusqlite = { version = "0.39.0", features = ["backup", "bundled", "column_metadata"] }
|
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
serde_yml = "0.0.12"
|
|
sysinfo = { version = "0.39.0", default-features = false, features = ["system"] }
|
|
tokio = { version = "1.52.2", features = ["full"] }
|
|
tracing = "0.1.44"
|
|
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
|
|
zip = { version = "5.1.1", default-features = false, features = ["deflate"] }
|
|
|
|
[dev-dependencies]
|
|
insta = { version = "1.47.2", features = ["yaml"] }
|
|
pretty_assertions = "1.4.1"
|
|
tempfile = "3.27.0"
|
|
|
|
[lints.rust]
|
|
unsafe_code = "forbid"
|
|
unreachable_pub = "warn"
|
|
|
|
[lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
nursery = { level = "warn", priority = -1 }
|
|
# Allow common false-positives that don't materially improve our code.
|
|
module_name_repetitions = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|