migration: reset the up state sql
Showing
1 changed file
with
12 additions
and
7 deletions
| ... | @@ -39,6 +39,7 @@ const ( | ... | @@ -39,6 +39,7 @@ const ( |
| 39 | type Migrationer interface { | 39 | type Migrationer interface { |
| 40 | Up() | 40 | Up() |
| 41 | Down() | 41 | Down() |
| 42 | Reset() | ||
| 42 | Exec(name, status string) error | 43 | Exec(name, status string) error |
| 43 | GetCreated() int64 | 44 | GetCreated() int64 |
| 44 | } | 45 | } |
| ... | @@ -72,6 +73,11 @@ func (m *Migration) Sql(sql string) { | ... | @@ -72,6 +73,11 @@ func (m *Migration) Sql(sql string) { |
| 72 | m.sqls = append(m.sqls, sql) | 73 | m.sqls = append(m.sqls, sql) |
| 73 | } | 74 | } |
| 74 | 75 | ||
| 76 | // Reset the sqls | ||
| 77 | func (m *Migration) Reset() { | ||
| 78 | m.sqls = make([]string, 0) | ||
| 79 | } | ||
| 80 | |||
| 75 | // execute the sql already add in the sql | 81 | // execute the sql already add in the sql |
| 76 | func (m *Migration) Exec(name, status string) error { | 82 | func (m *Migration) Exec(name, status string) error { |
| 77 | o := orm.NewOrm() | 83 | o := orm.NewOrm() |
| ... | @@ -90,11 +96,11 @@ func (m *Migration) addOrUpdateRecord(name, status string) error { | ... | @@ -90,11 +96,11 @@ func (m *Migration) addOrUpdateRecord(name, status string) error { |
| 90 | o := orm.NewOrm() | 96 | o := orm.NewOrm() |
| 91 | if status == "down" { | 97 | if status == "down" { |
| 92 | status = "rollback" | 98 | status = "rollback" |
| 93 | p, err := o.Raw("update migrations set status = ?, rollback_statements = ? where name = ?").Prepare() | 99 | p, err := o.Raw("update migrations set `status` = ?, `rollback_statements` = ?, `created_at` = ? where name = ?").Prepare() |
| 94 | if err != nil { | 100 | if err != nil { |
| 95 | return nil | 101 | return nil |
| 96 | } | 102 | } |
| 97 | _, err = p.Exec(status, strings.Join(m.sqls, "; "), name) | 103 | _, err = p.Exec(status, strings.Join(m.sqls, "; "), name, time.Now().Format(M_DB_DATE_FORMAT)) |
| 98 | return err | 104 | return err |
| 99 | } else { | 105 | } else { |
| 100 | status = "update" | 106 | status = "update" |
| ... | @@ -102,11 +108,7 @@ func (m *Migration) addOrUpdateRecord(name, status string) error { | ... | @@ -102,11 +108,7 @@ func (m *Migration) addOrUpdateRecord(name, status string) error { |
| 102 | if err != nil { | 108 | if err != nil { |
| 103 | return err | 109 | return err |
| 104 | } | 110 | } |
| 105 | t, err := time.Parse(M_DATE_FORMAT, m.Created) | 111 | _, err = p.Exec(name, time.Now().Format(M_DB_DATE_FORMAT), strings.Join(m.sqls, "; "), status) |
| 106 | if err != nil { | ||
| 107 | return err | ||
| 108 | } | ||
| 109 | _, err = p.Exec(name, t.Format(M_DB_DATE_FORMAT), strings.Join(m.sqls, "; "), status) | ||
| 110 | return err | 112 | return err |
| 111 | } | 113 | } |
| 112 | } | 114 | } |
| ... | @@ -136,6 +138,7 @@ func Upgrade(lasttime int64) error { | ... | @@ -136,6 +138,7 @@ func Upgrade(lasttime int64) error { |
| 136 | for _, v := range sm { | 138 | for _, v := range sm { |
| 137 | if v.created > lasttime { | 139 | if v.created > lasttime { |
| 138 | beego.Info("start upgrade", v.name) | 140 | beego.Info("start upgrade", v.name) |
| 141 | v.m.Reset() | ||
| 139 | v.m.Up() | 142 | v.m.Up() |
| 140 | err := v.m.Exec(v.name, "up") | 143 | err := v.m.Exec(v.name, "up") |
| 141 | if err != nil { | 144 | if err != nil { |
| ... | @@ -156,6 +159,7 @@ func Upgrade(lasttime int64) error { | ... | @@ -156,6 +159,7 @@ func Upgrade(lasttime int64) error { |
| 156 | func Rollback(name string) error { | 159 | func Rollback(name string) error { |
| 157 | if v, ok := migrationMap[name]; ok { | 160 | if v, ok := migrationMap[name]; ok { |
| 158 | beego.Info("start rollback") | 161 | beego.Info("start rollback") |
| 162 | v.Reset() | ||
| 159 | v.Down() | 163 | v.Down() |
| 160 | err := v.Exec(name, "down") | 164 | err := v.Exec(name, "down") |
| 161 | if err != nil { | 165 | if err != nil { |
| ... | @@ -184,6 +188,7 @@ func Reset() error { | ... | @@ -184,6 +188,7 @@ func Reset() error { |
| 184 | continue | 188 | continue |
| 185 | } | 189 | } |
| 186 | beego.Info("start reset:", v.name) | 190 | beego.Info("start reset:", v.name) |
| 191 | v.m.Reset() | ||
| 187 | v.m.Down() | 192 | v.m.Down() |
| 188 | err := v.m.Exec(v.name, "down") | 193 | err := v.m.Exec(v.name, "down") |
| 189 | if err != nil { | 194 | if err != nil { | ... | ... |
-
Please register or sign in to post a comment