Skip to content

Commit 64e9189

Browse files
committed
fix page sql
1 parent ec7f403 commit 64e9189

1 file changed

Lines changed: 35 additions & 98 deletions

File tree

api_page.go

Lines changed: 35 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,132 +1,69 @@
1-
//
21
// Example:
32
//
4-
// qSql = &qsql.Page{
5-
// CountSql:`SELECT count(1) FROM user_info WHERE create_time >= ? AND create_time <= ?`,
6-
// DataSql:`SELECT mobile, balance FROM user_info WHERE create_time >= ? AND create_time <= ?`
7-
// }
8-
// count, titles, result, err := qSql.QueryPageArray(db, true, condition, 0, 10)
3+
// mdb := db.GetCache("main")
4+
//
5+
// // count sql
6+
// cbd := NewSqlBuilder(mdb.DriverName())
7+
// cbd.Select("COUNT(*)")
8+
// cbd.Add("FROM tmp")
9+
// cbd.Add("WHERE")
10+
// cbd.AddTab("create_at BETWEEN ? AND ?", time.Now().AddDate(-1,0,0), time.Now())
11+
//
12+
// // copy condition
13+
// qbd := cbd.Copy()
14+
// qbd.Select("id", "created_at", "name")
15+
// qbd.Add("OFFSET ?", 0)
16+
// qbd.Add("LIMIT ?", 20)
17+
//
18+
// pSql := NewPageSql(cbd, qbd)
19+
// count, err := pSql.QueryCount(db)
920
// ...
1021
// Or
11-
// count, titles, result, err := qSql.QueryPageMap(db, true, condtion, 0, 10)
22+
// titles, result, err := pSql.QueryPageArray(db)
1223
// ...
13-
// if err != nil {
24+
// Or
25+
// titles, result, err := pSql.QueryPageMap(db)
1426
// ...
15-
// }
16-
//
1727
package qsql
1828

1929
import (
2030
"context"
21-
"fmt"
2231

2332
"github.com/gwaylib/errors"
2433
)
2534

26-
type PageArgs struct {
27-
args []interface{}
28-
offset int64
29-
limit int64
30-
}
31-
32-
func NewPageArgs(args ...interface{}) *PageArgs {
33-
return &PageArgs{
34-
args: args,
35-
}
36-
}
37-
38-
// using offset and limit when limit is set.
39-
func (p *PageArgs) Limit(offset, limit int64) *PageArgs {
40-
p.offset = offset
41-
p.limit = limit
42-
return p
43-
}
44-
4535
type PageSql struct {
46-
countSql string
47-
dataSql string
36+
countBD *SqlBuilder
37+
queryBD *SqlBuilder
4838
}
4939

50-
func NewPageSql(countSql, dataSql string) *PageSql {
51-
if len(countSql) == 0 {
52-
panic("countSql not set")
53-
}
54-
if len(dataSql) == 0 {
55-
panic("dataSql not set")
56-
}
40+
func NewPageSql(countBD, queryBD *SqlBuilder) *PageSql {
5741
return &PageSql{
58-
countSql: countSql,
59-
dataSql: dataSql,
42+
countBD: countBD,
43+
queryBD: queryBD,
6044
}
6145
}
6246

63-
func (p PageSql) CountSql() string {
64-
return p.countSql
65-
}
66-
func (p PageSql) DataSql() string {
67-
return p.dataSql
68-
}
69-
70-
// fill the page sql with fmt arg, and return a new page
71-
// Typically used for table name formatting
72-
func (p PageSql) FmtPage(args ...interface{}) PageSql {
73-
countSql := p.countSql
74-
if len(countSql) > 0 {
75-
countSql = fmt.Sprintf(p.countSql, args...)
76-
}
77-
dataSql := p.dataSql
78-
if len(dataSql) > 0 {
79-
dataSql = fmt.Sprintf(p.dataSql, args...)
80-
}
81-
82-
return PageSql{
83-
countSql: countSql,
84-
dataSql: dataSql,
85-
}
86-
}
87-
88-
func (p *PageSql) QueryCount(db *DB, args ...interface{}) (int64, error) {
47+
func (p *PageSql) QueryCount(db *DB) (int64, error) {
8948
count := int64(0)
90-
if err := queryElem(db, context.TODO(), &count, p.countSql, args...); err != nil {
49+
if err := queryElem(db, context.TODO(), &count, p.countBD.String(), p.countBD.Args()...); err != nil {
9150
return 0, errors.As(err)
9251
}
9352
return count, nil
9453
}
9554

96-
func (p *PageSql) QueryPageArr(db *DB, doCount bool, args *PageArgs) (int64, []string, [][]interface{}, error) {
97-
total := int64(0)
98-
dataArgs := args.args
99-
if args.limit > 0 {
100-
dataArgs = append(dataArgs, []interface{}{args.offset, args.limit}...)
101-
}
102-
titles, data, err := queryPageArr(db, context.TODO(), p.dataSql, dataArgs...)
55+
func (p *PageSql) QueryPageArr(db *DB) ([]string, [][]interface{}, error) {
56+
titles, data, err := queryPageArr(db, context.TODO(), p.queryBD.String(), p.queryBD.Args()...)
10357
if err != nil {
104-
return total, nil, nil, errors.As(err)
105-
} else if doCount {
106-
count, err := p.QueryCount(db, args.args...)
107-
if err != nil {
108-
return total, nil, nil, errors.As(err)
109-
}
110-
total = count
58+
return nil, nil, errors.As(err)
11159
}
112-
return total, titles, data, nil
60+
return titles, data, nil
11361
}
11462

115-
func (p *PageSql) QueryPageMap(db *DB, doCount bool, args *PageArgs) (int64, []string, []map[string]interface{}, error) {
116-
total := int64(0)
117-
dataArgs := args.args
118-
if args.limit > 0 {
119-
dataArgs = append(dataArgs, []interface{}{args.offset, args.limit}...)
120-
}
121-
title, data, err := queryPageMap(db, context.TODO(), p.dataSql, dataArgs...)
63+
func (p *PageSql) QueryPageMap(db *DB) ([]string, []map[string]interface{}, error) {
64+
titles, data, err := queryPageMap(db, context.TODO(), p.queryBD.String(), p.queryBD.Args()...)
12265
if err != nil {
123-
return total, nil, nil, errors.As(err)
124-
} else if doCount {
125-
count, err := p.QueryCount(db, args.args...)
126-
if err != nil {
127-
return total, nil, nil, errors.As(err)
128-
}
129-
total = count
66+
return nil, nil, errors.As(err)
13067
}
131-
return total, title, data, nil
68+
return titles, data, nil
13269
}

0 commit comments

Comments
 (0)