- 完成 ReqParam/ReqParams 方法实现,用于获取 URL 参数并返回 *Obj - 完成 ReqForm/ReqForms 方法实现,用于获取表单数据并返回 *Obj - 完成 ReqJson/ReqJsons 方法实现,用于获取 JSON Body 并返回 *Obj - 完成 ReqFile/ReqFiles 方法实现,用于获取上传文件 - 完成 ReqData/ReqDatas 方法实现,用于统一封装请求数据获取并返回 *Obj - 更新计划文件状态,标记所有相关功能模块为已完成
94 lines
1.6 KiB
Go
94 lines
1.6 KiB
Go
package db
|
||
|
||
import (
|
||
. "code.hoteas.com/golang/hotime/common"
|
||
"os"
|
||
"strings"
|
||
)
|
||
|
||
// backupSave 保存备份
|
||
// path: 备份文件路径
|
||
// tt: 表名
|
||
// code: 备份类型 0=全部, 1=仅数据, 2=仅DDL
|
||
func (that *HoTimeDB) backupSave(path string, tt string, code int) {
|
||
fd, _ := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
|
||
defer fd.Close()
|
||
|
||
str := "\r\n"
|
||
if code == 0 || code == 2 {
|
||
str += that.backupDdl(tt)
|
||
}
|
||
|
||
if code == 0 || code == 1 {
|
||
str += "insert into `" + tt + "`\r\n\r\n("
|
||
str += that.backupCol(tt)
|
||
}
|
||
|
||
_, _ = fd.Write([]byte(str))
|
||
}
|
||
|
||
// backupDdl 备份表结构(DDL)
|
||
func (that *HoTimeDB) backupDdl(tt string) string {
|
||
data := that.Query("show create table " + tt)
|
||
if len(data) == 0 {
|
||
return ""
|
||
}
|
||
|
||
return ObjToStr(data[0]["Create Table"]) + ";\r\n\r\n"
|
||
}
|
||
|
||
// backupCol 备份表数据
|
||
func (that *HoTimeDB) backupCol(tt string) string {
|
||
str := ""
|
||
data := that.Select(tt, "*")
|
||
|
||
lthData := len(data)
|
||
|
||
if lthData == 0 {
|
||
return str
|
||
}
|
||
|
||
lthCol := len(data[0])
|
||
col := make([]string, lthCol)
|
||
tempLthData := 0
|
||
|
||
for k := range data[0] {
|
||
if tempLthData == lthCol-1 {
|
||
str += "`" + k + "`) "
|
||
} else {
|
||
str += "`" + k + "`,"
|
||
}
|
||
col[tempLthData] = k
|
||
tempLthData++
|
||
}
|
||
|
||
str += " values"
|
||
|
||
for j := 0; j < lthData; j++ {
|
||
for m := 0; m < lthCol; m++ {
|
||
if m == 0 {
|
||
str += "("
|
||
}
|
||
|
||
v := "NULL"
|
||
if data[j][col[m]] != nil {
|
||
v = "'" + strings.Replace(ObjToStr(data[j][col[m]]), "'", `\'`, -1) + "'"
|
||
}
|
||
|
||
if m == lthCol-1 {
|
||
str += v + ") "
|
||
} else {
|
||
str += v + ","
|
||
}
|
||
}
|
||
|
||
if j == lthData-1 {
|
||
str += ";\r\n\r\n"
|
||
} else {
|
||
str += ",\r\n\r\n"
|
||
}
|
||
}
|
||
|
||
return str
|
||
}
|