Files
relspecgo/examples/jobs

RelSpec job examples

Run these commands from this directory:

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:

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:

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:

relspec job list --dir /path/to/project
relspec job run build-schema --file /path/to/project/relspec.yml --plan

See ../../docs/JOB_FILES.md for the complete job file reference.