Package migration enables you to generate migrations back and forth. It generates both migrations.

//Creates a table m.CreateTable("tablename","InnoDB","utf8");

//Alter a table m.AlterTable("tablename")

Standard Column Methods * SetDataType * SetNullable * SetDefault * SetUnsigned (use only on integer types unless produces error)

//Sets a primary column, multiple calls allowed, standard column methods available m.PriCol("id").SetAuto(true).SetNullable(false).SetDataType("INT(10)").SetUnsigned(true)

//UniCol Can be used multiple times, allows standard Column methods. Use same "index" string to add to same index m.UniCol("index","column")

//Standard Column Initialisation, can call .Remove() after NewCol("") on alter to remove m.NewCol("name").SetDataType("VARCHAR(255) COLLATE utf8_unicode_ci").SetNullable(false) m.NewCol("value").SetDataType("DOUBLE(8,2)").SetNullable(false)

//Rename Columns , only use with Alter table, doesn't works with Create, prefix standard column methods with "Old" to //create a true reversible migration eg: SetOldDataType("DOUBLE(12,3)") m.RenameColumn("from","to")...

//Foreign Columns, single columns are only supported, SetOnDelete & SetOnUpdate are available, call appropriately. //Supports standard column methods, automatic reverse. m.ForeignCol("local_col","foreign_col","foreign_table")

Package migration is used for migration

The table structure is as follow:

CREATE TABLE `migrations` (
	`id_migration` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'surrogate key',
	`name` varchar(255) DEFAULT NULL COMMENT 'migration name, unique',
	`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'date migrated or rolled back',
	`statements` longtext COMMENT 'SQL statements for this migration',
	`rollback_statements` longtext,
	`status` enum('update','rollback') DEFAULT NULL COMMENT 'update indicates it is a normal migration while rollback means this migration is rolled back',
	PRIMARY KEY (`id_migration`)



View Source
const (
	DateFormat   = "20060102_150405"
	DBDateFormat = "2006-01-02 15:04:05"

    const the data format for the bee generate migration datatype


    This section is empty.


    func Refresh

    func Refresh() error

      Refresh first Reset, then Upgrade

      func Register

      func Register(name string, m Migrationer) error

        Register register the Migration in the map

        func Reset

        func Reset() error

          Reset reset all migration run all migration's down function

          func Rollback

          func Rollback(name string) error

            Rollback rollback the migration by the name

            func Upgrade

            func Upgrade(lasttime int64) error

              Upgrade upgrade the migration from lasttime


              type Column

              type Column struct {
              	Name     string
              	Inc      string
              	Null     string
              	Default  string
              	Unsign   string
              	DataType string
              	Modify bool
              	// contains filtered or unexported fields

                Column struct defines a single column of a table

                func (*Column) Remove

                func (c *Column) Remove()

                  Remove marks the columns to be removed. it allows reverse m to create the column.

                  func (*Column) SetAuto

                  func (c *Column) SetAuto(inc bool) *Column

                    SetAuto enables auto_increment of column (can be used once)

                    func (*Column) SetDataType

                    func (c *Column) SetDataType(dataType string) *Column

                      SetDataType sets the dataType of the column

                      func (*Column) SetDefault

                      func (c *Column) SetDefault(def string) *Column

                        SetDefault sets the default value, prepend with "DEFAULT "

                        func (*Column) SetNullable

                        func (c *Column) SetNullable(null bool) *Column

                          SetNullable sets the column to be null

                          func (*Column) SetPrimary

                          func (c *Column) SetPrimary(m *Migration) *Column

                            SetPrimary adds the columns to the primary key (can only be used any number of times in only one m)

                            func (*Column) SetUnsigned

                            func (c *Column) SetUnsigned(unsign bool) *Column

                              SetUnsigned sets the column to be unsigned int

                              type Foreign

                              type Foreign struct {
                              	ForeignTable  string
                              	ForeignColumn string
                              	OnDelete      string
                              	OnUpdate      string

                                Foreign struct defines a single foreign relationship

                                func (*Foreign) SetOnDelete

                                func (foreign *Foreign) SetOnDelete(del string) *Foreign

                                  SetOnDelete sets the on delete of foreign

                                  func (*Foreign) SetOnUpdate

                                  func (foreign *Foreign) SetOnUpdate(update string) *Foreign

                                    SetOnUpdate sets the on update of foreign

                                    type Index

                                    type Index struct {
                                    	Name string

                                      Index struct defines the structure of Index Columns

                                      type Migration

                                      type Migration struct {
                                      	Created        string
                                      	TableName      string
                                      	Engine         string
                                      	Charset        string
                                      	ModifyType     string
                                      	Columns        []*Column
                                      	Indexes        []*Index
                                      	Primary        []*Column
                                      	Uniques        []*Unique
                                      	Foreigns       []*Foreign
                                      	Renames        []*RenameColumn
                                      	RemoveColumns  []*Column
                                      	RemoveIndexes  []*Index
                                      	RemoveUniques  []*Unique
                                      	RemoveForeigns []*Foreign
                                      	// contains filtered or unexported fields

                                        Migration defines the migrations by either SQL or DDL

                                        func (*Migration) AddColumns

                                        func (m *Migration) AddColumns(columns ...*Column) *Migration

                                          AddColumns adds columns to m struct

                                          func (*Migration) AddForeign

                                          func (m *Migration) AddForeign(foreign *Foreign) *Migration

                                            AddForeign adds the column to foreign in m struct

                                            func (*Migration) AddIndex

                                            func (m *Migration) AddIndex(index *Index) *Migration

                                              AddIndex adds the column to index in m struct

                                              func (*Migration) AddPrimary

                                              func (m *Migration) AddPrimary(primary *Column) *Migration

                                                AddPrimary adds the column to primary in m struct

                                                func (*Migration) AddUnique

                                                func (m *Migration) AddUnique(unique *Unique) *Migration

                                                  AddUnique adds the column to unique in m struct

                                                  func (*Migration) AlterTable

                                                  func (m *Migration) AlterTable(tablename string)

                                                    AlterTable set the ModifyType to alter

                                                    func (*Migration) CreateTable

                                                    func (m *Migration) CreateTable(tablename, engine, charset string, p ...func())

                                                      CreateTable creates the table on system

                                                      func (*Migration) Down

                                                      func (m *Migration) Down()

                                                        Down implement in the Inheritance struct for down

                                                        func (*Migration) Exec

                                                        func (m *Migration) Exec(name, status string) error

                                                          Exec execute the sql already add in the sql

                                                          func (*Migration) ForeignCol

                                                          func (m *Migration) ForeignCol(colname, foreigncol, foreigntable string) (foreign *Foreign)

                                                            ForeignCol creates a new foreign column and returns the instance of column

                                                            func (*Migration) GetCreated

                                                            func (m *Migration) GetCreated() int64

                                                              GetCreated get the unixtime from the Created

                                                              func (*Migration) GetSQL

                                                              func (m *Migration) GetSQL() (sql string)

                                                                GetSQL returns the generated sql depending on ModifyType

                                                                func (*Migration) Migrate

                                                                func (m *Migration) Migrate(migrationType string)

                                                                  Migrate adds the SQL to the execution list

                                                                  func (*Migration) NewCol

                                                                  func (m *Migration) NewCol(name string) *Column

                                                                    NewCol creates a new standard column and attaches it to m struct

                                                                    func (*Migration) PriCol

                                                                    func (m *Migration) PriCol(name string) *Column

                                                                      PriCol creates a new primary column and attaches it to m struct

                                                                      func (*Migration) RenameColumn

                                                                      func (m *Migration) RenameColumn(from, to string) *RenameColumn

                                                                        RenameColumn allows renaming of columns

                                                                        func (*Migration) Reset

                                                                        func (m *Migration) Reset()

                                                                          Reset the sqls

                                                                          func (*Migration) SQL

                                                                          func (m *Migration) SQL(sql string)

                                                                            SQL add sql want to execute

                                                                            func (*Migration) UniCol

                                                                            func (m *Migration) UniCol(uni, name string) *Column

                                                                              UniCol creates / appends columns to specified unique key and attaches it to m struct

                                                                              func (*Migration) Up

                                                                              func (m *Migration) Up()

                                                                                Up implement in the Inheritance struct for upgrade

                                                                                type Migrationer

                                                                                type Migrationer interface {
                                                                                	Exec(name, status string) error
                                                                                	GetCreated() int64

                                                                                  Migrationer is an interface for all Migration struct

                                                                                  type RenameColumn

                                                                                  type RenameColumn struct {
                                                                                  	OldName     string
                                                                                  	OldNull     string
                                                                                  	OldDefault  string
                                                                                  	OldUnsign   string
                                                                                  	OldDataType string
                                                                                  	NewName     string

                                                                                    RenameColumn struct allows renaming of columns

                                                                                    func (*RenameColumn) SetOldDataType

                                                                                    func (c *RenameColumn) SetOldDataType(dataType string) *RenameColumn

                                                                                      SetOldDataType allows reverting to previous datatype on reverse ms

                                                                                      func (*RenameColumn) SetOldDefault

                                                                                      func (c *RenameColumn) SetOldDefault(def string) *RenameColumn

                                                                                        SetOldDefault allows reverting to previous default on reverse ms

                                                                                        func (*RenameColumn) SetOldNullable

                                                                                        func (c *RenameColumn) SetOldNullable(null bool) *RenameColumn

                                                                                          SetOldNullable allows reverting to previous nullable on reverse ms

                                                                                          func (*RenameColumn) SetOldUnsigned

                                                                                          func (c *RenameColumn) SetOldUnsigned(unsign bool) *RenameColumn

                                                                                            SetOldUnsigned allows reverting to previous unsgined on reverse ms

                                                                                            type Unique

                                                                                            type Unique struct {
                                                                                            	Definition string
                                                                                            	Columns    []*Column

                                                                                              Unique struct defines a single unique key combination

                                                                                              func (*Unique) AddColumnsToUnique

                                                                                              func (unique *Unique) AddColumnsToUnique(columns ...*Column) *Unique

                                                                                                AddColumnsToUnique adds the columns to Unique Struct