/
alt3rmann
/
graphql-engine
Обзор
Документация
Войти
/
alt3rmann
/
graphql-engine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
cli/pkg/migrate/apply.go
65 строк
2 KB
Aravind K P
cli: port `pkg/migrate` to use `internal/errors`
27 окт 2022, 19:17
27 окт 2022, 19:17
2838665
Код
Авторство
О чём код?
package migrate import ( "github.com/hasura/graphql-engine/cli/v2" "github.com/hasura/graphql-engine/cli/v2/commands" "github.com/hasura/graphql-engine/cli/v2/internal/errors" ) type projectMigrationsApplier struct { ec *cli.ExecutionContext opts commands.MigrateApplyOptions } func newProjectMigrationsApplier(ec *cli.ExecutionContext) *projectMigrationsApplier { p := &projectMigrationsApplier{ec: ec, opts: commands.MigrateApplyOptions{EC: ec}} return p } type ProjectMigrationApplierOption func(applier *projectMigrationsApplier) func ApplyOnAllDatabases() ProjectMigrationApplierOption { return func(p *projectMigrationsApplier) { p.opts.EC.AllDatabases = true } } func ApplyOnDatabaseName(databaseName string) ProjectMigrationApplierOption { return func(p *projectMigrationsApplier) { p.opts.Source.Name = databaseName } } func ApplyWithSkipExecution() ProjectMigrationApplierOption { return func(p *projectMigrationsApplier) { p.opts.SkipExecution = true } } type MigrationDirection string const MigrationDirectionUp MigrationDirection = "up" const MigrationDirectionDown MigrationDirection = "down" func ApplyVersion(version string, direction MigrationDirection) ProjectMigrationApplierOption { return func(p *projectMigrationsApplier) { p.opts.VersionMigration = version p.opts.MigrationType = string(direction) } } func (p *projectMigrationsApplier) apply(opts ...ProjectMigrationApplierOption) ([]ApplyResult, error) { var op errors.Op = "migrate.projectMigrationsApplier.apply" for _, opt := range opts { opt(p) } var results []ApplyResult resultChan, err := p.opts.Apply() if err != nil { return nil, errors.E(op, err) } for v := range resultChan { results = append(results, ApplyResult(v)) } return results, nil }