Skip to content

Allow SQL backends to use a custom migrations table - #485

Open
rmorlok wants to merge 4 commits into
cschleiden:mainfrom
rmorlok:main
Open

Allow SQL backends to use a custom migrations table#485
rmorlok wants to merge 4 commits into
cschleiden:mainfrom
rmorlok:main

Conversation

@rmorlok

@rmorlok rmorlok commented Jun 6, 2026

Copy link
Copy Markdown

Applications embedding go-workflows within their primary application may want to share the main application database with go-workflows. If they use go-migrate, today they will collide with the schema migrations table. Provide an option in go-workflows to specify which table should be used to avoid the conflict.

  • Add WithMigrationsTable for the PostgreSQL and SQLite backends.
  • Pass the configured table name through to golang-migrate so only migration bookkeeping changes; workflow state tables are unchanged.
  • Cover the shared-database case where an embedding application already owns the default schema_migrations table.
  • Document the new backend options.

Refs rmorlok/authproxy#539

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a configurable migrations bookkeeping table for the SQLite and PostgreSQL backends so applications sharing a database (and already using golang-migrate’s default schema_migrations) can avoid collisions while keeping go-workflows’ operational tables unchanged.

Changes:

  • Add WithMigrationsTable(...) options for SQLite and PostgreSQL backends.
  • Wire the configured table name into the golang-migrate driver config (sqlite.Config / postgres.Config).
  • Add tests covering the shared-database scenario where schema_migrations is pre-owned by the embedding application, and update backend docs.
Show a summary per file
File Description
docs/source/includes/_backends.md Documents the new WithMigrationsTable backend option for SQLite/PostgreSQL.
backend/sqlite/sqlite.go Passes configured migrations table into golang-migrate’s SQLite driver config.
backend/sqlite/sqlite_test.go Adds a test verifying custom migrations table avoids touching existing schema_migrations.
backend/sqlite/options.go Introduces MigrationsTable option and WithMigrationsTable setter for SQLite.
backend/postgres/postgres.go Passes configured migrations table into golang-migrate’s Postgres driver config.
backend/postgres/postgres_test.go Adds a test verifying custom migrations table avoids touching existing schema_migrations.
backend/postgres/options.go Introduces MigrationsTable option and WithMigrationsTable setter for Postgres.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 7/7 changed files
  • Comments generated: 1

Comment on lines +48 to 49
- `WithMigrationsTable(migrationsTable string)` - Set the table used to track applied migrations. Defaults to golang-migrate's standard migration table.
- `WithBackendOptions(opts ...backend.BackendOption)` - Apply generic backend options

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry about that. My codebase didn't use MySQL so my agent must've missed that. Happy to push a fix if you want.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed a change with the mysql support.

@rmorlok

rmorlok commented Jun 16, 2026

Copy link
Copy Markdown
Author

@cschleiden wondering if you had a chance to take a look at this PR 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants