This commit is contained in:
azw 2023-08-20 14:29:13 +08:00
parent 52d292902a
commit f326f515dc
2 changed files with 45 additions and 2 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"math" "math"
"strings" "strings"
"sync"
) )
type DBStyle int32 type DBStyle int32
@ -14,9 +15,15 @@ const (
JS_STYLE_DB JS_STYLE_DB
) )
type dataSource struct {
conn *q5.Mysql
entry q5.ListHead
}
type dbPool struct { type dbPool struct {
style DBStyle style DBStyle
dataSourceHash map[string]*q5.Mysql lock sync.Mutex
dataSourceHash map[string]*q5.ListHead
} }
func (this *dbPool) init() { func (this *dbPool) init() {
@ -25,6 +32,29 @@ func (this *dbPool) init() {
func (this *dbPool) unInit() { func (this *dbPool) unInit() {
} }
func (this *dbPool) RegisterDataSource(name string, host string, port int32,
user string, passwd string, dataBase string, size int32) {
this.lock.Lock()
defer this.lock.Unlock()
var head *q5.ListHead
if val, ok := this.dataSourceHash[name]; ok {
head = val
} else {
head = q5.NewListHead()
this.dataSourceHash[name] = head
}
for i := int32(0); i < size; i++ {
ds := dataSource{}
ds.conn = q5.NewMysql(host, port, user, passwd, dataBase)
ds.entry.Init(&ds)
head.AddTail(&ds.entry)
err := ds.conn.Open()
if err != nil {
panic(fmt.Sprintf("RegisterDataSource err:%s", err))
}
}
}
func (this *dbPool) Select( func (this *dbPool) Select(
dataSource string, dataSource string,
tblName string, tblName string,
@ -135,6 +165,20 @@ func (this *dbPool) PageQuery(
pagination.Total = q5.ToInt32(*(*row)[0]) pagination.Total = q5.ToInt32(*(*row)[0])
pagination.TotalPages = int32(math.Ceil(q5.ToFloat64(*(*row)[0]) / pagination.TotalPages = int32(math.Ceil(q5.ToFloat64(*(*row)[0]) /
float64(pagination.PerPage))) float64(pagination.PerPage)))
start := pagination.PerPage * (pagination.CurrentPage - 1)
limit := pagination.PerPage
this.internalQuery(
dataSource,
fmt.Sprintf("%s LIMIT %d, %d", finalySql, start, limit),
params,
func (err error, rows *DataSet) {
if err != nil {
cb(err, &pagination)
return
}
pagination.Rows = rows
cb(nil, &pagination)
})
}) })
} }

View File

@ -22,7 +22,6 @@ type IMMsgNode struct {
type Pagination struct { type Pagination struct {
Total int32 Total int32
Count int32
PerPage int32 PerPage int32
CurrentPage int32 CurrentPage int32
TotalPages int32 TotalPages int32