forked from golang/hotime
V2.0封测
This commit is contained in:
parent
6034598bb4
commit
adfb2236dc
182
db/hotimedb.go
182
db/hotimedb.go
@ -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{}
|
||||||
for key, _ := range testQuData {
|
if reflect.ValueOf(qu[0]).Type().String() == "common.Map" {
|
||||||
//fmt.Println(key, ":", value)
|
testQuData = qu[0].(Map)
|
||||||
testQu = append(testQu, key)
|
for key, _ := range testQuData {
|
||||||
|
//fmt.Println(key, ":", value)
|
||||||
|
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 {
|
||||||
@ -752,7 +914,7 @@ func (that *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
|
|||||||
k = "`" + k + "` "
|
k = "`" + k + "` "
|
||||||
}
|
}
|
||||||
where += k + " LIKE ? "
|
where += k + " LIKE ? "
|
||||||
v = "%" + ObjToStr(v) + "% "
|
v = "%" + ObjToStr(v) + "%"
|
||||||
res = append(res, v)
|
res = append(res, v)
|
||||||
case "[!~]": //左边任意
|
case "[!~]": //左边任意
|
||||||
k = strings.Replace(k, "[~]", "", -1)
|
k = strings.Replace(k, "[~]", "", -1)
|
||||||
@ -760,7 +922,7 @@ func (that *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
|
|||||||
k = "`" + k + "` "
|
k = "`" + k + "` "
|
||||||
}
|
}
|
||||||
where += k + " LIKE ? "
|
where += k + " LIKE ? "
|
||||||
v = "%" + ObjToStr(v) + " "
|
v = "%" + ObjToStr(v) + ""
|
||||||
res = append(res, v)
|
res = append(res, v)
|
||||||
case "[~!]": //右边任意
|
case "[~!]": //右边任意
|
||||||
k = strings.Replace(k, "[~]", "", -1)
|
k = strings.Replace(k, "[~]", "", -1)
|
||||||
@ -768,7 +930,7 @@ func (that *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
|
|||||||
k = "`" + k + "` "
|
k = "`" + k + "` "
|
||||||
}
|
}
|
||||||
where += k + " LIKE ? "
|
where += k + " LIKE ? "
|
||||||
v = ObjToStr(v) + "% "
|
v = ObjToStr(v) + "%"
|
||||||
res = append(res, v)
|
res = append(res, v)
|
||||||
case "[~~]": //手动任意
|
case "[~~]": //手动任意
|
||||||
k = strings.Replace(k, "[~]", "", -1)
|
k = strings.Replace(k, "[~]", "", -1)
|
||||||
|
@ -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", "*")
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ func main() {
|
|||||||
|
|
||||||
return isFinished
|
return isFinished
|
||||||
})
|
})
|
||||||
|
|
||||||
appIns.Run(Router{"app": app.AppProj})
|
appIns.Run(Router{"app": app.AppProj})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user