From 52d292902a45344b6ce49d03e2632d83c61a382b Mon Sep 17 00:00:00 2001 From: azw Date: Sun, 20 Aug 2023 13:46:32 +0800 Subject: [PATCH] 1 --- dbpool.go | 21 +++++++++++++++++++++ types.go | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/dbpool.go b/dbpool.go index 5db62ff..0d02170 100644 --- a/dbpool.go +++ b/dbpool.go @@ -3,6 +3,7 @@ package f5 import ( "q5" "fmt" + "math" "strings" ) @@ -115,6 +116,26 @@ func (this *dbPool) PageQuery( var pagination Pagination pagination.PerPage = q5.Max(1, perPage) pagination.CurrentPage = q5.Max(1, page) + finalySql := sql + if filter != nil { + finalySql += filter.GenSql() + } + if orderBy != "" { + finalySql += " " + orderBy + " " + } + this.internalQueryOne( + dataSource, + fmt.Sprintf("SELECT COUNT(*) FROM (%s)", finalySql), + params, + func (err error, row *[]*string) { + if err != nil { + cb(err, &pagination) + return + } + pagination.Total = q5.ToInt32(*(*row)[0]) + pagination.TotalPages = int32(math.Ceil(q5.ToFloat64(*(*row)[0]) / + float64(pagination.PerPage))) + }) } func (this *dbPool) borrowConn(dataSource string) *q5.Mysql { diff --git a/types.go b/types.go index 38996f3..bacf7ae 100644 --- a/types.go +++ b/types.go @@ -33,7 +33,7 @@ type HandlerFunc func(*Context) type QueryResultCb func (error, *DataSet); type QueryOneCb func (error, *[]*string); -type PageQueryCb func (error, Pagination); +type PageQueryCb func (error, *Pagination); type ExecResultCb func (error, int64, int64); type middleware struct {