Skip to content

Commit 1d2781a

Browse files
committed
refactor: improve method signatures in builder methods
1 parent 3c6bef5 commit 1d2781a

File tree

8 files changed

+140
-140
lines changed

8 files changed

+140
-140
lines changed

builder.go

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,51 +15,51 @@ var (
1515
}
1616
)
1717

18-
func (db *Pool) DB(dbName string) *builder {
19-
_, err := db.db.Exec(fmt.Sprintf("USE `%s`", dbName))
18+
func (p *Pool) DB(dbName string) *builder {
19+
_, err := p.db.Exec(fmt.Sprintf("USE `%s`", dbName))
2020
if err != nil {
21-
db.Logger.Error(err, "Failed to switch to database "+dbName)
21+
p.logger.Error(err, "Failed to switch to database "+dbName)
2222
}
2323

2424
return &builder{
25-
db: db.db,
25+
db: p.db,
2626
dbName: &dbName,
2727
selectList: []string{"*"},
28-
logger: db.Logger,
28+
logger: p.logger,
2929
}
3030
}
3131

32-
func (q *builder) Table(tableName string) *builder {
33-
q.table = &tableName
34-
return q
32+
func (b *builder) Table(tableName string) *builder {
33+
b.table = &tableName
34+
return b
3535
}
3636

37-
func (q *builder) Select(fields ...string) *builder {
37+
func (b *builder) Select(fields ...string) *builder {
3838
if len(fields) > 0 {
39-
q.selectList = fields
39+
b.selectList = fields
4040
}
41-
return q
41+
return b
4242
}
4343

44-
func (q *builder) Total() *builder {
45-
q.withTotal = true
46-
return q
44+
func (b *builder) Total() *builder {
45+
b.withTotal = true
46+
return b
4747
}
4848

49-
func (q *builder) InnerJoin(table, first, operator string, second ...string) *builder {
50-
return q.join("INNER", table, first, operator, second...)
49+
func (b *builder) InnerJoin(table, first, operator string, second ...string) *builder {
50+
return b.join("INNER", table, first, operator, second...)
5151
}
5252

53-
func (q *builder) LeftJoin(table, first, operator string, second ...string) *builder {
54-
return q.join("LEFT", table, first, operator, second...)
53+
func (b *builder) LeftJoin(table, first, operator string, second ...string) *builder {
54+
return b.join("LEFT", table, first, operator, second...)
5555
}
5656

57-
func (q *builder) RightJoin(table, first, operator string, second ...string) *builder {
58-
return q.join("RIGHT", table, first, operator, second...)
57+
func (b *builder) RightJoin(table, first, operator string, second ...string) *builder {
58+
return b.join("RIGHT", table, first, operator, second...)
5959
}
6060

6161
// * private method
62-
func (q *builder) join(joinType, table, first, operator string, second ...string) *builder {
62+
func (b *builder) join(joinType, table, first, operator string, second ...string) *builder {
6363
var secondField string
6464
if len(second) > 0 {
6565
secondField = second[0]
@@ -76,11 +76,11 @@ func (q *builder) join(joinType, table, first, operator string, second ...string
7676
}
7777

7878
joinClause := fmt.Sprintf("%s JOIN `%s` ON %s %s %s", joinType, table, first, operator, secondField)
79-
q.joinList = append(q.joinList, joinClause)
80-
return q
79+
b.joinList = append(b.joinList, joinClause)
80+
return b
8181
}
8282

83-
func (q *builder) Where(column string, operator interface{}, value ...interface{}) *builder {
83+
func (b *builder) Where(column string, operator interface{}, value ...interface{}) *builder {
8484
var targetValue interface{}
8585
var targetOperator string
8686

@@ -108,51 +108,51 @@ func (q *builder) Where(column string, operator interface{}, value ...interface{
108108
}
109109

110110
whereClause := fmt.Sprintf("%s %s %s", column, targetOperator, placeholder)
111-
q.whereList = append(q.whereList, whereClause)
112-
q.bindingList = append(q.bindingList, targetValue)
111+
b.whereList = append(b.whereList, whereClause)
112+
b.bindingList = append(b.bindingList, targetValue)
113113

114-
return q
114+
return b
115115
}
116116

117-
func (q *builder) OrderBy(column string, direction ...string) *builder {
117+
func (b *builder) OrderBy(column string, direction ...string) *builder {
118118
dir := "ASC"
119119
if len(direction) > 0 {
120120
dir = strings.ToUpper(direction[0])
121121
}
122122

123123
if dir != "ASC" && dir != "DESC" {
124124
log.Printf("Invalid order direction: %s", dir)
125-
return q
125+
return b
126126
}
127127

128128
if !strings.Contains(column, ".") {
129129
column = fmt.Sprintf("`%s`", column)
130130
}
131131

132132
orderClause := fmt.Sprintf("%s %s", column, dir)
133-
q.orderList = append(q.orderList, orderClause)
134-
return q
133+
b.orderList = append(b.orderList, orderClause)
134+
return b
135135
}
136136

137-
func (q *builder) Limit(num int) *builder {
138-
q.limit = &num
139-
return q
137+
func (b *builder) Limit(num int) *builder {
138+
b.limit = &num
139+
return b
140140
}
141141

142-
func (q *builder) Offset(num int) *builder {
143-
q.offset = &num
144-
return q
142+
func (b *builder) Offset(num int) *builder {
143+
b.offset = &num
144+
return b
145145
}
146146

147-
func (q *builder) Increase(target string, number ...int) *builder {
147+
func (b *builder) Increase(target string, number ...int) *builder {
148148
num := 1
149149
if len(number) > 0 {
150150
num = number[0]
151151
}
152152

153153
setClause := fmt.Sprintf("%s = %s + %d", target, target, num)
154-
q.setList = append(q.setList, setClause)
155-
return q
154+
b.setList = append(b.setList, setClause)
155+
return b
156156
}
157157

158158
// * private method

get.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import (
66
"strings"
77
)
88

9-
func (q *builder) Get() (*sql.Rows, error) {
10-
if q.table == nil {
11-
return nil, q.logger.Error(nil, "Table is required")
9+
func (b *builder) Get() (*sql.Rows, error) {
10+
if b.table == nil {
11+
return nil, b.logger.Error(nil, "Table is required")
1212
}
1313

14-
fieldNames := make([]string, len(q.selectList))
15-
for i, field := range q.selectList {
14+
fieldNames := make([]string, len(b.selectList))
15+
for i, field := range b.selectList {
1616
switch {
1717
case field == "*":
1818
fieldNames[i] = "*"
@@ -23,31 +23,31 @@ func (q *builder) Get() (*sql.Rows, error) {
2323
}
2424
}
2525

26-
query := fmt.Sprintf("SELECT %s FROM `%s`", strings.Join(fieldNames, ", "), *q.table)
26+
query := fmt.Sprintf("SELECT %s FROM `%s`", strings.Join(fieldNames, ", "), *b.table)
2727

28-
if len(q.joinList) > 0 {
29-
query += " " + strings.Join(q.joinList, " ")
28+
if len(b.joinList) > 0 {
29+
query += " " + strings.Join(b.joinList, " ")
3030
}
3131

32-
if len(q.whereList) > 0 {
33-
query += " WHERE " + strings.Join(q.whereList, " AND ")
32+
if len(b.whereList) > 0 {
33+
query += " WHERE " + strings.Join(b.whereList, " AND ")
3434
}
3535

36-
if q.withTotal {
36+
if b.withTotal {
3737
query = fmt.Sprintf("SELECT COUNT(*) OVER() AS total, data.* FROM (%s) AS data", query)
3838
}
3939

40-
if len(q.orderList) > 0 {
41-
query += " ORDER BY " + strings.Join(q.orderList, ", ")
40+
if len(b.orderList) > 0 {
41+
query += " ORDER BY " + strings.Join(b.orderList, ", ")
4242
}
4343

44-
if q.limit != nil {
45-
query += fmt.Sprintf(" LIMIT %d", *q.limit)
44+
if b.limit != nil {
45+
query += fmt.Sprintf(" LIMIT %d", *b.limit)
4646
}
4747

48-
if q.offset != nil {
49-
query += fmt.Sprintf(" OFFSET %d", *q.offset)
48+
if b.offset != nil {
49+
query += fmt.Sprintf(" OFFSET %d", *b.offset)
5050
}
5151

52-
return q.query(query, q.bindingList...)
52+
return b.query(query, b.bindingList...)
5353
}

insert.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import (
55
"strings"
66
)
77

8-
func (q *builder) Insert(data map[string]interface{}) (int64, error) {
9-
if q.table == nil {
10-
return 0, q.logger.Error(nil, "Table is required")
8+
func (b *builder) Insert(data map[string]interface{}) (int64, error) {
9+
if b.table == nil {
10+
return 0, b.logger.Error(nil, "Table is required")
1111
}
1212

1313
columns := make([]string, 0, len(data))
@@ -21,12 +21,12 @@ func (q *builder) Insert(data map[string]interface{}) (int64, error) {
2121
}
2222

2323
query := fmt.Sprintf("INSERT INTO `%s` (%s) VALUES (%s)",
24-
*q.table,
24+
*b.table,
2525
strings.Join(columns, ", "),
2626
strings.Join(placeholders, ", "),
2727
)
2828

29-
result, err := q.exec(query, values...)
29+
result, err := b.exec(query, values...)
3030
if err != nil {
3131
return 0, err
3232
}

instance.go

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,17 @@ import (
1313
)
1414

1515
func New(c Config) (*PoolList, error) {
16-
// 初始化日誌器設定
17-
if c.Log == nil {
18-
c.Log = &Log{
19-
Path: defaultLogPath,
20-
Stdout: false,
21-
MaxSize: defaultLogMaxSize,
22-
}
23-
}
24-
if c.Log.Path == "" {
25-
c.Log.Path = defaultLogPath
26-
}
27-
if c.Log.MaxSize <= 0 {
28-
c.Log.MaxSize = defaultLogMaxSize
29-
}
30-
if c.Log.MaxBackup <= 0 {
31-
c.Log.MaxBackup = defaultLogMaxBackup
32-
}
16+
c.Log = validLoggerConfig(c)
3317

34-
// 建立日誌器實例
3518
logger, err := goLogger.New(c.Log)
3619
if err != nil {
37-
return nil, fmt.Errorf("Can not initialize logger: %v", err)
20+
return nil, fmt.Errorf("Failed to initialize `pardnchiu/go-logger`: %w", err)
3821
}
3922

4023
var pool = &PoolList{
4124
Read: nil,
4225
Write: nil,
43-
Logger: logger,
26+
logger: logger,
4427
}
4528

4629
readConfig := c.Read
@@ -124,8 +107,8 @@ func New(c Config) (*PoolList, error) {
124107
pool.Write = &Pool{db: writeDB}
125108

126109
pool.listenShutdownSignal()
127-
pool.Write.Logger = logger
128-
pool.Read.Logger = logger
110+
pool.Write.logger = logger
111+
pool.Read.logger = logger
129112
return pool, nil
130113
}
131114

@@ -143,16 +126,15 @@ func (p *PoolList) Close() error {
143126
}
144127

145128
if readErr != nil {
146-
return p.Write.Logger.Error(readErr, "Failed to close read pool")
129+
return p.Write.logger.Error(readErr, "Failed to close read pool")
147130
}
148131
if writeErr != nil {
149-
return p.Write.Logger.Error(writeErr, "Failed to close write pool")
132+
return p.Write.logger.Error(writeErr, "Failed to close write pool")
150133
}
151134

152135
return nil
153136
}
154137

155-
// * private method
156138
func (p *PoolList) listenShutdownSignal() {
157139
c := make(chan os.Signal, 1)
158140
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
@@ -163,3 +145,23 @@ func (p *PoolList) listenShutdownSignal() {
163145
os.Exit(0)
164146
}()
165147
}
148+
149+
func validLoggerConfig(c Config) *Log {
150+
if c.Log == nil {
151+
c.Log = &Log{
152+
Path: defaultLogPath,
153+
Stdout: false,
154+
MaxSize: defaultLogMaxSize,
155+
}
156+
}
157+
if c.Log.Path == "" {
158+
c.Log.Path = defaultLogPath
159+
}
160+
if c.Log.MaxSize <= 0 {
161+
c.Log.MaxSize = defaultLogMaxSize
162+
}
163+
if c.Log.MaxBackup <= 0 {
164+
c.Log.MaxBackup = defaultLogMaxBackup
165+
}
166+
return c.Log
167+
}

0 commit comments

Comments
 (0)