CLI
Schema lifecycle management and related tasks
Section titled “Schema lifecycle management and related tasks”The jsorm binary handles project initialization, SQL generation, health checks, and migration orchestration.
jsorm helpInitialization
Section titled “Initialization”Bootstrap a new project with the interactive wizard:
pnpm dlx jsorm@latest initnpx jsorm@latest initjsorm init:
- Prompts for schema entry path (default
src/schema/index.ts) - Generates a deterministic schema structure with an example
Usermodel - Prompts for adapter(s) — installs packages and peer drivers
- Provisions the Rust engine binary into
node_modules/.jsorm/engine - Writes
jsorm.config.tswith connection and migration sources - Creates
.envwith aDATABASE_URLplaceholder if missing
Config-first mode
Section titled “Config-first mode”When jsorm.config.ts has defaults configured, CLI commands need no arguments:
jsorm db:check # verify adapter connectivityjsorm migrate:status # check pending migrationsjsorm migrate # apply all pending migrationsjsorm migrate:up # apply next pending migrationjsorm migrate:down # roll back last batch (guarded in prod)jsorm table:create # generate DDL for default modeljsorm table:create User # generate DDL for named modeljsorm migrate:statement # generate SQL for default migrationjsorm migrate:statement initUsers # generate SQL for named migrationjsorm migrate:generate # diff models vs snapshot, emit migration fileLegacy module-export mode
Section titled “Legacy module-export mode”Pass the compiled JS file and export name when not using config-first:
jsorm migrate ./dist/schema.js ormSourcejsorm migrate:up ./dist/schema.js ormSourcejsorm migrate:down ./dist/schema.js ormSourcejsorm migrate:status ./dist/schema.js ormSourcejsorm db:check ./dist/schema.js connectionSourcejsorm table:create ./dist/schema.js Userjsorm migrate:statement ./dist/schema.js initUsersjsorm migrate:generate ./dist/schema.js generateSourceCompile TypeScript before running legacy commands:
tsc && jsorm migrate:status ./dist/schema.js ormSourceEnvironment safety matrix
Section titled “Environment safety matrix”| Command | Safe in production | Notes |
|---|---|---|
migrate | ✅ Yes | Applies pending only |
migrate:up | ✅ Yes | One step at a time |
migrate:status | ✅ Yes | Read-only |
db:check | ✅ Yes | Read-only |
migrate:down | ⚠️ Guarded | Requires JSORM_ALLOW_UNSAFE_OPERATIONS=true |
db:fresh | ❌ Blocked | Development only |
db:rollback | ❌ Blocked | Development only |
Automatic migration generation
Section titled “Automatic migration generation”migrate:generate diffs your current model definitions against the stored schema snapshot and emits a reviewed migration file:
jsorm migrate:generateFlow:
- Reads current models from config
- Loads
.migrations/schema.jsonsnapshot - Builds an AST diff
- Classifies each change as
safe,review_required, ordangerous - Emits
.migrations/<timestamp>_<tables>.ts - Review and edit the file before applying with
jsorm migrate
Engine binary
Section titled “Engine binary”The CLI requires the Rust engine binary. If it’s missing, the CLI stops with an explicit error:
[JSORM ENGINE MISSING] Run: pnpx jsorm initUse JSORM_ENGINE_PATH to point at an explicit binary path in containerized or CI environments.
Debug mode
Section titled “Debug mode”JSORM_DEBUG=1 jsorm migrate:statusLogs: config loading, engine binary path resolution, adapter initialization, and query dispatch.
Best practices
Section titled “Best practices”- Use
pnpm dlx jsorm@latest initto set up new projects — it wires engine + config correctly. - Use
db:checkin CI deploy verification to confirm adapter connectivity. - Keep destructive commands (
db:fresh,db:rollback) out of production automation. - Run
migrate:statusas part of deployment to confirm all migrations applied. - Use
migrate:up(one step) for cautious incremental rollouts.