V2.0封测

This commit is contained in:
hoteas 2022-08-02 03:02:57 +08:00
parent 6034598bb4
commit adfb2236dc
3 changed files with 183 additions and 10 deletions

View File

@ -33,6 +33,152 @@ type HoTimeDB struct {
Mode int //mode为0生产模式,1、为测试模式、2为开发模式 Mode int //mode为0生产模式,1、为测试模式、2为开发模式
} }
type HotimeDBBuilder struct {
*HoTimeDB
table string
selects []interface{}
join Slice
where Map
lastWhere Map
page int
pageRow int
}
func (that *HoTimeDB) Table(table string) *HotimeDBBuilder {
return &HotimeDBBuilder{HoTimeDB: that, table: table, where: Map{}}
}
func (that *HotimeDBBuilder) Get(qu ...interface{}) Map {
return that.HoTimeDB.Get(that.table, that.join, qu, that.where)
}
func (that *HotimeDBBuilder) Count() int {
return that.HoTimeDB.Count(that.table, that.join, that.where)
}
func (that *HotimeDBBuilder) Page(page, pageRow int) *HotimeDBBuilder {
that.page = page
that.pageRow = pageRow
return that
}
func (that *HotimeDBBuilder) Select(qu ...interface{}) []Map {
if that.page != 0 {
return that.HoTimeDB.Page(that.page, that.pageRow).PageSelect(that.table, that.join, qu, that.where)
}
return that.HoTimeDB.Select(that.table, that.join, qu, that.where)
}
func (that *HotimeDBBuilder) Update(data Map) int64 {
return that.HoTimeDB.Update(that.table, data, that.where)
}
func (that *HotimeDBBuilder) Delete() int64 {
return that.HoTimeDB.Delete(that.table, that.where)
}
func (that *HotimeDBBuilder) LeftJoin(table, joinStr string) *HotimeDBBuilder {
that.Join(Map{"[>]" + table: joinStr})
return that
}
func (that *HotimeDBBuilder) RightJoin(table, joinStr string) *HotimeDBBuilder {
that.Join(Map{"[<]" + table: joinStr})
return that
}
func (that *HotimeDBBuilder) InnerJoin(table, joinStr string) *HotimeDBBuilder {
that.Join(Map{"[><]" + table: joinStr})
return that
}
func (that *HotimeDBBuilder) FullJoin(table, joinStr string) *HotimeDBBuilder {
that.Join(Map{"[<>]" + table: joinStr})
return that
}
func (that *HotimeDBBuilder) Join(join Map) *HotimeDBBuilder {
if that.join == nil {
that.join = Slice{}
}
if join == nil {
return that
}
that.join = append(that.join, join)
return that
}
func (that *HotimeDBBuilder) And(where Map) *HotimeDBBuilder {
if where == nil {
return that
}
if that.lastWhere != nil {
that.lastWhere["AND"] = where
that.lastWhere = where
return that
}
that.lastWhere = where
that.where = Map{"AND": where}
return that
}
func (that *HotimeDBBuilder) Or(where Map) *HotimeDBBuilder {
if where == nil {
return that
}
if that.lastWhere != nil {
that.lastWhere["OR"] = where
that.lastWhere = where
return that
}
that.lastWhere = where
that.where = Map{"Or": where}
return that
}
func (that *HotimeDBBuilder) Where(where Map) *HotimeDBBuilder {
if where == nil {
return that
}
if that.lastWhere != nil {
that.lastWhere["AND"] = where
that.lastWhere = where
return that
}
that.lastWhere = where
that.where = Map{"AND": that.lastWhere}
return that
}
func (that *HotimeDBBuilder) From(table string) *HotimeDBBuilder {
that.table = table
return that
}
func (that *HotimeDBBuilder) Order(qu ...interface{}) *HotimeDBBuilder {
that.where["ORDER"] = ObjToSlice(qu)
return that
}
func (that *HotimeDBBuilder) Limit(qu ...interface{}) *HotimeDBBuilder {
that.where["LIMIT"] = ObjToSlice(qu)
return that
}
func (that *HotimeDBBuilder) Group(qu ...interface{}) *HotimeDBBuilder {
that.where["GROUP"] = ObjToSlice(qu)
return that
}
// SetConnect 设置数据库配置连接 // SetConnect 设置数据库配置连接
func (that *HoTimeDB) SetConnect(connect func(err ...*Error) (master, slave *sql.DB), err ...*Error) { func (that *HoTimeDB) SetConnect(connect func(err ...*Error) (master, slave *sql.DB), err ...*Error) {
that.ConnectFunc = connect that.ConnectFunc = connect
@ -433,8 +579,9 @@ func (that *HoTimeDB) Select(table string, qu ...interface{}) []Map {
if reflect.ValueOf(qu[intQs]).Type().String() == "string" { if reflect.ValueOf(qu[intQs]).Type().String() == "string" {
query += " " + qu[intQs].(string) query += " " + qu[intQs].(string)
} else { } else {
for i := 0; i < len(qu[intQs].(Slice)); i++ { data := ObjToSlice(qu[intQs])
k := qu[intQs].(Slice)[i].(string) for i := 0; i < len(data); i++ {
k := data.GetString(i)
if strings.Contains(k, " AS ") { if strings.Contains(k, " AS ") {
query += " " + k + " " query += " " + k + " "
@ -443,7 +590,7 @@ func (that *HoTimeDB) Select(table string, qu ...interface{}) []Map {
query += " `" + k + "` " query += " `" + k + "` "
} }
if i+1 != len(qu[intQs].(Slice)) { if i+1 != len(data) {
query = query + ", " query = query + ", "
} }
@ -461,11 +608,26 @@ func (that *HoTimeDB) Select(table string, qu ...interface{}) []Map {
if join { if join {
var testQu = []string{} var testQu = []string{}
testQuData := qu[0].(Map) testQuData := Map{}
if reflect.ValueOf(qu[0]).Type().String() == "common.Map" {
testQuData = qu[0].(Map)
for key, _ := range testQuData { for key, _ := range testQuData {
//fmt.Println(key, ":", value) //fmt.Println(key, ":", value)
testQu = append(testQu, key) testQu = append(testQu, key)
} }
}
if reflect.ValueOf(qu[0]).Type().String() == "common.Slice" {
for key, _ := range testQuData {
v := testQuData.GetMap(key)
for k1, v1 := range v {
testQu = append(testQu, k1)
testQuData[k1] = v1
}
}
}
sort.Strings(testQu) sort.Strings(testQu)
for _, k := range testQu { for _, k := range testQu {

View File

@ -12,6 +12,16 @@ var AppProj = Proj{
"ctg": CtgCtr, "ctg": CtgCtr,
"mail": MailCtr, "mail": MailCtr,
"test": { "test": {
"test": func(that *Context) {
//data:=that.Db.Table("admin").Order("id DESC").Select("*")
//data1:=that.Db.Table("admin").Where(Map{"name[~]":"m"}).Order("id DESC").Select("*")
//
//data3:=that.Db.Select("admin","*",Map{"name[~]":"m"})
data2 := that.Db.Table("article").Where(Map{"title[~]": "m"}).Order("id DESC").Page(1, 10).Select("*")
c := that.Db.Table("article").Where(Map{"title[~]": "m"}).Order("id DESC").Group("title").Select("*")
//that.Display(0,Slice{data1,data,data3,data2})
that.Display(0, Slice{data2, c})
},
"res": func(that *Context) { "res": func(that *Context) {
ebw_res := that.Db.Select("ebw_res", "*") ebw_res := that.Db.Select("ebw_res", "*")

View File

@ -12,6 +12,7 @@ func main() {
return isFinished return isFinished
}) })
appIns.Run(Router{"app": app.AppProj}) appIns.Run(Router{"app": app.AppProj})
} }