Peter Kurfer
9ea9a8f658
Some checks failed
Go build / build (push) Failing after 1m58s
- setup ent scheme - add command to create users - document API - add helpers to create migrations - add command to run migrations - add basic compose file
46 lines
966 B
Go
46 lines
966 B
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/alecthomas/kong"
|
|
|
|
"code.icb4dc0.de/prskr/searcherside/core/ports"
|
|
"code.icb4dc0.de/prskr/searcherside/infrastructure/config"
|
|
"code.icb4dc0.de/prskr/searcherside/internal/ent"
|
|
)
|
|
|
|
type MigrateHandler struct {
|
|
DB config.DB `embed:"" prefix:"db."`
|
|
}
|
|
|
|
func (m *MigrateHandler) Run(ctx context.Context, migrator ports.Migrator, client *ent.Client) (err error) {
|
|
defer func() {
|
|
err = errors.Join(err, client.Close())
|
|
}()
|
|
|
|
req := ports.MigrationRequest{
|
|
Driver: m.DB.Driver,
|
|
URL: m.DB.URL,
|
|
}
|
|
|
|
if err := migrator.Migrate(ctx, req); err != nil {
|
|
return fmt.Errorf("failed to apply migrations: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (m *MigrateHandler) AfterApply(kctx *kong.Context) error {
|
|
migrator, client, err := m.DB.Migrator()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize migrator: %w", err)
|
|
}
|
|
|
|
kctx.Bind(client)
|
|
kctx.BindTo(migrator, (*ports.Migrator)(nil))
|
|
|
|
return nil
|
|
}
|