Skip to content

Commit edc3ce8

Browse files
authored
feat: support Acceptable (#22)
* feat: support Acceptable * feat: support Acceptable
1 parent bc58af2 commit edc3ce8

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

multiple.go

+14-9
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ type (
4545
Followers []string `json:",optional"`
4646
}
4747

48-
SqlOption func(*multipleSqlConn)
48+
SqlOption func(*sqlOptions)
4949

50+
sqlOptions struct {
51+
accept func(error) bool
52+
}
5053
multipleSqlConn struct {
5154
leader sqlx.SqlConn
5255
enableFollower bool
@@ -60,10 +63,15 @@ type (
6063

6164
// NewMultipleSqlConn returns a SqlConn that supports leader-follower read/write separation.
6265
func NewMultipleSqlConn(driverName string, conf DBConf, opts ...SqlOption) sqlx.SqlConn {
63-
leader := sqlx.NewSqlConn(driverName, conf.Leader)
66+
var sqlOpt sqlOptions
67+
for _, opt := range opts {
68+
opt(&sqlOpt)
69+
}
70+
71+
leader := sqlx.NewSqlConn(driverName, conf.Leader, sqlx.WithAcceptable(sqlOpt.accept))
6472
followers := make([]sqlx.SqlConn, 0, len(conf.Followers))
6573
for _, datasource := range conf.Followers {
66-
followers = append(followers, sqlx.NewSqlConn(driverName, datasource))
74+
followers = append(followers, sqlx.NewSqlConn(driverName, datasource, sqlx.WithAcceptable(sqlOpt.accept)))
6775
}
6876

6977
conn := &multipleSqlConn{
@@ -72,10 +80,7 @@ func NewMultipleSqlConn(driverName string, conf DBConf, opts ...SqlOption) sqlx.
7280
followers: followers,
7381
conf: conf,
7482
driveName: driverName,
75-
}
76-
77-
for _, opt := range opts {
78-
opt(conn)
83+
accept: sqlOpt.accept,
7984
}
8085

8186
conn.p2cPicker = newP2cPicker(followers, conn.accept)
@@ -251,8 +256,8 @@ func (q *queryDB) query(ctx context.Context, query func(ctx context.Context, con
251256
}
252257

253258
func WithAccept(accept func(err error) bool) SqlOption {
254-
return func(conn *multipleSqlConn) {
255-
conn.accept = accept
259+
return func(opts *sqlOptions) {
260+
opts.accept = accept
256261
}
257262
}
258263

0 commit comments

Comments
 (0)