81 lines
2.3 KiB
Markdown
81 lines
2.3 KiB
Markdown
# RelSpec job examples
|
|
|
|
Run these commands from this directory:
|
|
|
|
```bash
|
|
cd examples/jobs
|
|
|
|
# List every job from relspec.yml and the additional relspec.*.yml files.
|
|
relspec job list
|
|
|
|
# Validate a job and print its resolved plan without reading or writing data.
|
|
relspec job run build-schema --plan
|
|
|
|
# Build PostgreSQL DDL from the two DBML inputs.
|
|
relspec job run build-schema
|
|
|
|
# Run a job's dependency chain. This runs build-schema first, then build-json.
|
|
relspec job run build-json
|
|
|
|
# Inspect build-json's output. The from_job input adds the dependency automatically.
|
|
relspec job run lint-schema
|
|
|
|
# Extract only the posts table.
|
|
relspec job run posts-only
|
|
|
|
# List migration scripts in deterministic order without connecting to a database.
|
|
relspec job run migration-order
|
|
|
|
# Render one TypeScript file per table using the example template.
|
|
relspec job run generate-typescript
|
|
|
|
# Compare the two example schemas and write the summary to the logfile.
|
|
relspec job run compare-schemas
|
|
|
|
# Use an environment variable in an output path.
|
|
export VST=build/typescript
|
|
relspec job run generate-typescript --plan
|
|
relspec job run generate-typescript
|
|
```
|
|
|
|
Database jobs use environment variables for connection strings. Set them in
|
|
the shell before running the jobs; do not put connection strings in YAML:
|
|
|
|
```bash
|
|
export SOURCE_DB_URL='postgres://user:password@localhost/source_db'
|
|
export TARGET_DB_URL='postgres://user:password@localhost/target_db'
|
|
|
|
# Read the source database and write a local DBML snapshot.
|
|
relspec job run snapshot-database
|
|
|
|
# Preview migration execution without connecting to PostgreSQL.
|
|
relspec job run apply-migrations --plan
|
|
|
|
# Execute the migrations against TARGET_DB_URL.
|
|
relspec job run apply-migrations
|
|
```
|
|
|
|
The `apply-migrations` job demonstrates execution from multiple directories:
|
|
|
|
```yaml
|
|
script_dirs:
|
|
- migrations/core
|
|
- migrations/tenant
|
|
output:
|
|
format: pgsql
|
|
conn_env: TARGET_DB_URL
|
|
```
|
|
|
|
RelSpec combines the SQL files from both folders in deterministic order before
|
|
executing them against the configured PostgreSQL database.
|
|
|
|
To use a different directory or manifest, pass `--dir` or `--file`:
|
|
|
|
```bash
|
|
relspec job list --dir /path/to/project
|
|
relspec job run build-schema --file /path/to/project/relspec.yml --plan
|
|
```
|
|
|
|
See [../../docs/JOB_FILES.md](../../docs/JOB_FILES.md) for the complete job
|
|
file reference.
|