Files
rdbms-playground/Cargo.toml
T
claude@clouddev1 202e25a94f feat(seed): fake-data generation library + fake dependency (ADR-0048 P1.1)
The pure generation half of `seed` — no command wiring yet:
- src/seed/: ColumnSpec + Generator model and a seeded StdRng; the
  type-gated name-heuristic catalogue (D7) with documented
  false-positive guards; table-context name disambiguation (D11);
  identifier (D10) and enum-ish (D12) detection; per-type + bounded-date
  generators (D8); the hand-rolled product generator (D9); and PickFrom
  for IN-CHECK / enum lists.
- Adds the `fake` crate (v5, default features). Verified: single rand
  0.10.1 (no duplication), determinism via one seeded StdRng driving
  both fake and the hand-rolled generators, security-clean across
  osv/grype/trivy.
- ADR-0048 D3 updated to record the dependency verification.

32 Tier-1 tests (exact-value via fixed --seed); 1673 lib tests pass,
clippy all-targets clean.
2026-06-11 15:35:17 +00:00

82 lines
3.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://git.lazyeval.net/oli/rdbms-playground"
readme = "README.md"
publish = false
[dependencies]
anyhow = "1.0.102"
# Native system-clipboard for the `copy` command (ADR-0041). Text
# only: `default-features = false` drops the heavy `image` crate. On
# Linux this is X11-only — `wayland-data-control` is deliberately
# omitted (it ~doubles the dep tree), as OSC 52 covers native-Wayland
# sessions and XWayland covers the rest.
arboard = { version = "3.6.1", default-features = false }
base64 = "0.22.1"
# `clock` brings local-timezone support (UTC → machine local) for
# the undo-dialog snapshot timestamp (issue #13). No locale feature:
# month names stay English; `unstable-locales` is deliberately avoided.
chrono = { version = "0.4.44", default-features = false, features = ["clock"] }
crossterm = { version = "0.29.0", features = ["event-stream"] }
csv = "1.4.0"
directories = "6.0.0"
# Realistic fake-data generators for the `seed` command (ADR-0048):
# names, emails, addresses, companies, lorem, etc. Default features
# only — the basic fakers need no flags; date/datetime values are
# generated in-house (rand + the existing `chrono`) for the bounded
# windows ADR-0048 D8 requires, so `fake`'s `chrono` feature is
# deliberately omitted. No commerce/product module exists, so the
# `product` generator is hand-rolled (D9).
fake = "5"
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"] }
# Maintained fork of `serde_yaml` (the deprecated original). Replaces
# `serde_yml`, which was archived as unsound + unmaintained
# (RUSTSEC-2025-0068, and its `libyml` backend RUSTSEC-2025-0067).
serde_norway = "0.9.42"
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"
# Dev/test build hygiene (see CLAUDE.md "Build hygiene"). `cargo test`
# links ~25 separate integration-test binaries, each statically
# embedding the bundled engine + every dependency; the `test` profile
# inherits these from `dev`.
# - incremental = false: the incremental cache reached 16 GB here for
# little benefit in a full-suite workflow; disabling it keeps target/
# bounded.
# - debug = "line-tables-only": full debug info (the default `debug = 2`)
# is ~85-90% of each test binary; line tables keep file:line in panics
# and backtraces (we debug via `tracing` logs, not a step-debugger) at
# a fraction of the size.
[profile.dev]
incremental = false
debug = "line-tables-only"
[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"