mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-25 18:55:27 -06:00
# Which Problems Are Solved To integrate river as a task queue we need to ensure the migrations of river are executed. # How the Problems Are Solved - A new schema was added to the Zitadel database called "queue" - Added a repeatable setup step to Zitadel which executes the [migrations of river](https://riverqueue.com/docs/migrations#go-migration-api). # Additional Changes - Added more hooks to the databases to properly set the schema for the task queue # Additional Context - Closes https://github.com/zitadel/zitadel/issues/9280
29 lines
629 B
Go
29 lines
629 B
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/zitadel/zitadel/internal/database"
|
|
"github.com/zitadel/zitadel/internal/eventstore"
|
|
"github.com/zitadel/zitadel/internal/queue"
|
|
)
|
|
|
|
type RiverMigrateRepeatable struct {
|
|
client *database.DB
|
|
}
|
|
|
|
func (mig *RiverMigrateRepeatable) Execute(ctx context.Context, _ eventstore.Event) error {
|
|
if mig.client.Type() != "postgres" {
|
|
return nil
|
|
}
|
|
return queue.New(mig.client).ExecuteMigrations(ctx)
|
|
}
|
|
|
|
func (mig *RiverMigrateRepeatable) String() string {
|
|
return "repeatable_migrate_river"
|
|
}
|
|
|
|
func (f *RiverMigrateRepeatable) Check(lastRun map[string]interface{}) bool {
|
|
return true
|
|
}
|