57a9670b by astaxie

migration: reset the up state sql

1 parent 14cd9e51
...@@ -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 {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!