# Schema workflow

The `schema/*.dbml` files are the database schema source of truth.

## Generate SQL migrations

Run:

```bash
make generate-migrations
```

This uses `relspec` to convert the DBML files into PostgreSQL SQL and writes the generated schema migration to:

- `migrations/020_generated_schema.sql`

## Generate ResolveSpec models

Run:

```bash
make generate-models
```

This uses `relspec` to convert `schema/*.dbml` into Bun/ResolveSpec-compatible
Go models in:

- `internal/generatedmodels/`

## Check schema drift

Run:

```bash
make check-schema-drift
```

This regenerates the SQL from `schema/*.dbml` and compares it with `migrations/020_generated_schema.sql`.
If the generated output differs, the command fails so CI can catch schema drift.

## Workflow

1. Update the DBML files in `schema/`
2. Run `make generate-migrations`
3. Run `make generate-models`
4. Review generated SQL and generated models
5. Commit DBML changes and generated outputs

Existing handwritten migrations stay in place. Going forward, update the DBML first and regenerate the SQL from there.
