mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-12-08 19:03:02 +08:00
简化数据库查询代码
This commit is contained in:
@@ -126,13 +126,13 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult) (ops []string,
|
||||
oldField := oldTable.FindField(newField.Name)
|
||||
if oldField == nil {
|
||||
ops = append(ops, "+ "+newTable.Name+" "+newField.Name)
|
||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD " + newField.Name + " " + newField.Definition)
|
||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " ADD `" + newField.Name + "` " + newField.Definition)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else if oldField.Definition != newField.Definition {
|
||||
} else if !newField.EqualDefinition(oldField.Definition) {
|
||||
ops = append(ops, "* "+newTable.Name+" "+newField.Name)
|
||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " MODIFY " + newField.Name + " " + newField.Definition)
|
||||
_, err = db.Exec("ALTER TABLE " + newTable.Name + " MODIFY `" + newField.Name + "` " + newField.Definition)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -180,7 +180,7 @@ func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult) (ops []string,
|
||||
newField := newTable.FindField(oldField.Name)
|
||||
if newField == nil {
|
||||
ops = append(ops, "- field "+oldTable.Name+" "+oldField.Name)
|
||||
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP COLUMN " + oldField.Name)
|
||||
_, err = db.Exec("ALTER TABLE " + oldTable.Name + " DROP COLUMN `" + oldField.Name + "`")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -79,6 +79,9 @@ func (this *SQLExecutor) checkData(db *dbs.DB) error {
|
||||
|
||||
// 检查集群配置
|
||||
err = this.checkCluster(db)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新版本号
|
||||
err = this.updateVersion(db, teaconst.Version)
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
package setup
|
||||
|
||||
import "regexp"
|
||||
|
||||
type SQLField struct {
|
||||
Name string `json:"name"`
|
||||
Definition string `json:"definition"`
|
||||
}
|
||||
|
||||
func (this *SQLField) EqualDefinition(definition2 string) bool {
|
||||
if this.Definition == definition2 {
|
||||
return true
|
||||
}
|
||||
|
||||
// 针对MySQL v8.0.17以后
|
||||
def1 := regexp.MustCompile(`(?)(tinyint|smallint|mediumint|int|bigint)\(\d+\)`).
|
||||
ReplaceAllString(this.Definition, "${1}")
|
||||
return def1 == definition2
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user