A tiny CLI and library to generate and manage SurrealDB migration files (numeric or temporal prefixed).
Install
# install (binary) from crates.io
cargo install surreal-migraine-cli
# install (library) from crates.io
cargo add surreal-migraine
# build (binary) locally
cargo build --release
# or build (library) locally
cargo build --release -p surreal-migraineUsage
# numeric paired (default) — creates a folder with up/down
# either binary name can be used: `smg` or `surrealdb-migraine`
smg add "Create users"
# temporal paired (default)
surrealdb-migraine add --temporal "Add audit table"
# specify directory and increase verbosity
smg add --dir ./migrations -v "Fix schema"
# Single-file mode (legacy behavior)
# Use `--single` to create a single `.surql` file instead of a paired folder
smg add --single "Create users"
surrealdb-migraine add --single --temporal "Add index"CLI quick reference
add <NAME>— create a migration file using NAME (sanitized).--temporal/-t— use timestamp prefix instead of numeric.--dir <DIR>— override migrations directory (defaults to ./migrations).-v, -vv— increase logging verbosity (debug/trace).
Notes on binary names
- The project provides two executable names that point to the same CLI:
smgandsurrealdb-migraine. - If you install from crates.io with
cargo install surreal-migraine, Cargo will install the crate's binaries (bothsmgandsurrealdb-migrainewhen available). - To install a specific binary from the local checkout:
# install only `smg` from the current path
cargo install --path . --bin smg
# install only `surrealdb-migraine`
cargo install --path . --bin surrealdb-migraineNotes
- Names are sanitized (whitespace -> underscores, invalid chars removed).
- Numeric mode picks the next numeric prefix (e.g.
000_...,001_...). - Temporal mode uses a timestamp
YYYYMMDDHHMMSSand will append a suffix if a collision occurs.
- include_dir For making embedding directories easy.