Documentation ¶
Overview ¶
Package gormigrate is a migration helper for Gorm (http://jinzhu.me/gorm/). Gorm already have useful migrate functions (http://jinzhu.me/gorm/database.html#migration), just misses proper schema versioning and rollback cababilities.
Example:
package main import ( "log" "github.com/go-gormigrate/gormigrate" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) type Person struct { gorm.Model Name string } type Pet struct { gorm.Model Name string PersonID int } func main() { db, err := gorm.Open("sqlite3", "mydb.sqlite3") if err != nil { log.Fatal(err) } if err = db.DB().Ping(); err != nil { log.Fatal(err) } db.LogMode(true) m := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{ { ID: "201608301400", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&Person{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("people").Error }, }, { ID: "201608301430", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&Pet{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("pets").Error }, }, }) err = m.Migrate() if err == nil { log.Printf("Migration did run successfully") } else { log.Printf("Could not migrate: %v", err) } }
Index ¶
- Variables
- type DuplicatedIDError
- type Gormigrate
- func (g *Gormigrate) InitSchema(initSchema InitSchemaFunc)
- func (g *Gormigrate) Migrate() error
- func (g *Gormigrate) MigrateTo(migrationID string) error
- func (g *Gormigrate) RollbackLast() error
- func (g *Gormigrate) RollbackMigration(m *Migration) error
- func (g *Gormigrate) RollbackTo(migrationID string) error
- type InitSchemaFunc
- type MigrateFunc
- type Migration
- type Options
- type RollbackFunc
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultOptions can be used if you don't want to think about options. DefaultOptions = &Options{ TableName: "migrations", IDColumnName: "id", IDColumnSize: 255, UseTransaction: false, } // ErrRollbackImpossible is returned when trying to rollback a migration // that has no rollback function. ErrRollbackImpossible = errors.New("gormigrate: It's impossible to rollback this migration") // ErrNoMigrationDefined is returned when no migration is defined. ErrNoMigrationDefined = errors.New("gormigrate: No migration defined") // ErrMissingID is returned when the ID od migration is equal to "" ErrMissingID = errors.New("gormigrate: Missing ID in migration") // ErrNoRunnedMigration is returned when any runned migration was found while // running RollbackLast ErrNoRunnedMigration = errors.New("gormigrate: Could not find last runned migration") )
Functions ¶
This section is empty.
Types ¶
type DuplicatedIDError ¶ added in v1.1.4
type DuplicatedIDError struct {
ID string
}
DuplicatedIDError is returned when more than one migration have the same ID
func (*DuplicatedIDError) Error ¶ added in v1.1.4
func (e *DuplicatedIDError) Error() string
type Gormigrate ¶
type Gormigrate struct {
// contains filtered or unexported fields
}
Gormigrate represents a collection of all migrations of a database schema.
func New ¶
func New(db *gorm.DB, options *Options, migrations []*Migration) *Gormigrate
New returns a new Gormigrate.
func (*Gormigrate) InitSchema ¶ added in v1.1.0
func (g *Gormigrate) InitSchema(initSchema InitSchemaFunc)
InitSchema sets a function that is run if no migration is found. The idea is preventing to run all migrations when a new clean database is being migrating. In this function you should create all tables and foreign key necessary to your application.
func (*Gormigrate) Migrate ¶
func (g *Gormigrate) Migrate() error
Migrate executes all migrations that did not run yet.
func (*Gormigrate) MigrateTo ¶ added in v1.2.1
func (g *Gormigrate) MigrateTo(migrationID string) error
MigrateTo executes all migrations that did not run yet up to the migration that matches `migrationID`.
func (*Gormigrate) RollbackLast ¶
func (g *Gormigrate) RollbackLast() error
RollbackLast undo the last migration
func (*Gormigrate) RollbackMigration ¶
func (g *Gormigrate) RollbackMigration(m *Migration) error
RollbackMigration undo a migration.
func (*Gormigrate) RollbackTo ¶ added in v1.2.1
func (g *Gormigrate) RollbackTo(migrationID string) error
RollbackTo undoes migrations up to the given migration that matches the `migrationID`. Migration with the matching `migrationID` is not rolled back.
type InitSchemaFunc ¶ added in v1.1.0
InitSchemaFunc is the func signature for initializing the schema.
type MigrateFunc ¶
MigrateFunc is the func signature for migrating.
type Migration ¶
type Migration struct { // ID is the migration identifier. Usually a timestamp like "201601021504". ID string // Migrate is a function that will br executed while running this migration. Migrate MigrateFunc // Rollback will be executed on rollback. Can be nil. Rollback RollbackFunc }
Migration represents a database migration (a modification to be made on the database).
type Options ¶
type Options struct { // TableName is the migration table. TableName string // IDColumnName is the name of column where the migration id will be stored. IDColumnName string // IDColumnSize is the length of the migration id column IDColumnSize int // UseTransaction makes Gormigrate execute migrations inside a single transaction. // Keep in mind that not all databases support DDL commands inside transactions. UseTransaction bool }
Options define options for all migrations.
type RollbackFunc ¶
RollbackFunc is the func signature for rollbacking.