[Proposal] Database Migrations;
Summary: The database migrations now can be created using the methods on
the migration struct. it does not break any existing migration features.
it upgrades the migration struct and adds few more struct types so that
the migrations can be efficiently generated for create, alter, reverse,
drop.
Current Features:
* Supports creation of columns
* `m.NewCol("name").SetDataType("VARCHAR(10)").SetNullable("true")`
* **NOTE** `SetNullable` & `SetDefault` methods should not be called on
same column for consistency
* Supports addition of primary keys
* `m.PriCol("id").SetDataType("INT(10)").SetNullable("true")`
* **NOTE** `setAuto(true)` can be only called on Primary keys
* Supports addition of unique keys
* `m.UniCol("unique_index","column_name").SetDataType("VARCHAR(23)").SetNullable("true")`
* **NOTE** `UniCol` can be called again with the same index name to
add column to the index
* Supports rename of columns
* `m.RenameColumn("from_name","to_name")`
* Allows standard column methods and methods such that, `SetOldDefault` allows
reversibility of renames
* TODO:
* ForeignKey
Signed-off-by: Gnanakeethan Balasubramaniam <gnanakeethan@gmail.com>
This commit is contained in:
@@ -52,6 +52,25 @@ type Migrationer interface {
|
||||
GetCreated() int64
|
||||
}
|
||||
|
||||
type Migration struct {
|
||||
sqls []string
|
||||
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
|
||||
}
|
||||
|
||||
var (
|
||||
migrationMap map[string]Migrationer
|
||||
)
|
||||
@@ -60,12 +79,6 @@ func init() {
|
||||
migrationMap = make(map[string]Migrationer)
|
||||
}
|
||||
|
||||
// Migration the basic type which will implement the basic type
|
||||
type Migration struct {
|
||||
sqls []string
|
||||
Created string
|
||||
}
|
||||
|
||||
// Up implement in the Inheritance struct for upgrade
|
||||
func (m *Migration) Up() {
|
||||
|
||||
@@ -76,6 +89,11 @@ func (m *Migration) Down() {
|
||||
|
||||
}
|
||||
|
||||
func (m *Migration) Migrate(migrationType string) {
|
||||
m.ModifyType = migrationType
|
||||
m.sqls = append(m.sqls, m.GetSQL())
|
||||
}
|
||||
|
||||
// SQL add sql want to execute
|
||||
func (m *Migration) SQL(sql string) {
|
||||
m.sqls = append(m.sqls, sql)
|
||||
|
||||
Reference in New Issue
Block a user