mirror of
https://github.com/muun/recovery.git
synced 2025-02-23 11:32:33 -05:00
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
|
// 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)
|
||
|
// }
|
||
|
// }
|
||
|
package gormigrate
|