// Copyright 2014 beego Author. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // 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`) // ) ENGINE=InnoDB DEFAULT CHARSET=utf8; package migration import ( "github.com/astaxie/beego/client/orm/migration" ) // const the data format for the bee generate migration datatype const ( DateFormat = "20060102_150405" DBDateFormat = "2006-01-02 15:04:05" ) // Migrationer is an interface for all Migration struct type Migrationer interface { Up() Down() Reset() Exec(name, status string) error GetCreated() int64 } // Migration defines the migrations by either SQL or DDL type Migration migration.Migration // Up implement in the Inheritance struct for upgrade func (m *Migration) Up() { (*migration.Migration)(m).Up() } // Down implement in the Inheritance struct for down func (m *Migration) Down() { (*migration.Migration)(m).Down() } // Migrate adds the SQL to the execution list func (m *Migration) Migrate(migrationType string) { (*migration.Migration)(m).Migrate(migrationType) } // SQL add sql want to execute func (m *Migration) SQL(sql string) { (*migration.Migration)(m).SQL(sql) } // Reset the sqls func (m *Migration) Reset() { (*migration.Migration)(m).Reset() } // Exec execute the sql already add in the sql func (m *Migration) Exec(name, status string) error { return (*migration.Migration)(m).Exec(name, status) } // GetCreated get the unixtime from the Created func (m *Migration) GetCreated() int64 { return (*migration.Migration)(m).GetCreated() } // Register register the Migration in the map func Register(name string, m Migrationer) error { return migration.Register(name, m) } // Upgrade upgrade the migration from lasttime func Upgrade(lasttime int64) error { return migration.Upgrade(lasttime) } // Rollback rollback the migration by the name func Rollback(name string) error { return migration.Rollback(name) } // Reset reset all migration // run all migration's down function func Reset() error { return migration.Reset() } // Refresh first Reset, then Upgrade func Refresh() error { return migration.Refresh() }