36 lines
845 B
Go
36 lines
845 B
Go
package models
|
|
|
|
import "errors"
|
|
|
|
const CurrentPlanVersion = 1
|
|
|
|
var ErrInvalidPlanVersion = errors.New("invalid plan version")
|
|
|
|
type Plan struct {
|
|
// Version is the version of the plan.
|
|
Version int
|
|
// Auto is the mode of the plan. If true, the plan will rollback automatically in case of an error.
|
|
Auto bool
|
|
// Migrations is the list of migrations to be applied.
|
|
Migrations []*Migration
|
|
// RevertMigrations is the list of migrations to be applied in case of an error.
|
|
RevertMigrations []*Migration
|
|
}
|
|
|
|
func NewPlan(migrations, rollback []*Migration, auto bool) *Plan {
|
|
return &Plan{
|
|
Version: CurrentPlanVersion,
|
|
Migrations: migrations,
|
|
RevertMigrations: rollback,
|
|
Auto: auto,
|
|
}
|
|
}
|
|
|
|
func (p *Plan) Validate() error {
|
|
if p.Version != CurrentPlanVersion {
|
|
return ErrInvalidPlanVersion
|
|
}
|
|
|
|
return nil
|
|
}
|