package fixtures import ( "context" "fmt" "allaboutapps.dev/aw/go-starter/internal/models" "allaboutapps.dev/aw/go-starter/internal/util" "github.com/aarondl/sqlboiler/v4/boil" ) // Live Service fixtures to be applied by manually running the CLI "app db seed" // Note that these fixtures are not available while testing // see the separate internal/test/fixtures.go file type Upsertable interface { Upsert(ctx context.Context, exec boil.ContextExecutor, updateOnConflict bool, conflictColumns []string, updateColumns, insertColumns boil.Columns, opts ...models.UpsertOptionFunc) error } // Mind the declaration order! The fields get upserted exactly in the order they are declared. type FixtureMap struct{} func Fixtures() FixtureMap { return FixtureMap{} } func Upserts() []Upsertable { fix := Fixtures() upsertableIfc := (*Upsertable)(nil) upserts, err := util.GetFieldsImplementing(&fix, upsertableIfc) if err != nil { panic(fmt.Errorf("failed to get upsertable fixture fields: %w", err)) } return upserts }