Files
be.ems/tools/loadpconf/db.go

102 lines
2.8 KiB
Go

package main
import (
"encoding/json"
"fmt"
"strings"
_ "github.com/go-sql-driver/mysql"
"xorm.io/xorm"
)
var xEngine *xorm.Engine
func XormConnectDatabaseWithUri(sql string) (*xorm.Engine, error) {
// sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", db.User, db.Password, db.Host, db.Port, db.Name)
sqlStr := fmt.Sprintf("%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", sql)
// fmt.Printf("sqlStr:%s:******@tcp(%s:%s)/%s?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true&loc=Local", db.User, db.Host, db.Port, db.Name)
var err error
xEngine, err = xorm.NewEngine("mysql", sqlStr) //1、Create xorm engine
if err != nil {
fmt.Println("Failed to connect database:", err)
return nil, err
}
xEngine.ShowSQL(true)
return xEngine, nil
}
type ParamConfig struct {
// Id int `json:"id" xorm:"pk 'id' autoincr"`
NeType string `json:"neType"`
NeId string `json:"neId"`
TopTag string `json:"topTag"`
TopDisplay string `json:"topDisplay"`
Method string `json:"method"`
ParamJson string `json:"paramJson"`
}
func XormInsertParamConfig(mapJson *map[string]interface{}) (int64, error) {
var affected, a int64
var err error
paramConfig := new(ParamConfig)
for n, d := range *mapJson {
if d == nil {
break
}
fmt.Printf("n: %s", n)
session := xEngine.NewSession()
defer session.Close()
_, err = session.Table("param_config").Where("ne_type = ?", strings.ToUpper(n)).Delete()
if err != nil {
fmt.Println("Failed to delete param_config:", err)
}
session.Commit()
for t, p := range d.(map[string]interface{}) {
if p == nil {
break
}
fmt.Println("t:", t)
fmt.Println("p:", p)
for k, v := range p.(map[string]interface{}) {
fmt.Println("k, v: ", k, v)
if k == "display" {
paramConfig.TopDisplay = fmt.Sprintf("%v", v)
} else if k == "method" {
if v != "" {
paramConfig.Method = fmt.Sprintf("%v", v)
}
} else {
pc, _ := json.Marshal(v)
paramConfig.ParamJson = fmt.Sprintf("{\"%v\":%v}", k, string(pc))
}
}
paramConfig.NeType = strings.ToUpper(n)
paramConfig.NeId = ""
paramConfig.TopTag = t
// paramConfig.TopDisplay = p["display"]
// paramConfig.ParamJson = p.(string)
fmt.Println("paramConfig:", paramConfig)
session := xEngine.NewSession()
defer session.Close()
// _, err = session.Table("param_config").Where("ne_type = ? and top_tag = ?", paramConfig.NeType, paramConfig.TopTag).Delete()
// if err != nil {
// fmt.Println("Failed to delete param_config:", err)
// }
a, err = session.Insert(paramConfig)
if err != nil {
fmt.Println("Failed to insert param_config:", err)
}
session.Commit()
affected += a
}
}
return affected, err
}