@@ -37,24 +37,23 @@ var (
37
37
type Config struct {
38
38
// non boolean fields
39
39
40
- User string // Username
41
- Passwd string // Password (requires User)
42
- Net string // Network (e.g. "tcp", "tcp6", "unix". default: "tcp")
43
- Addr string // Address (default: "127.0.0.1:3306" for "tcp" and "/tmp/mysql.sock" for "unix")
44
- DBName string // Database name
45
- Params map [string ]string // Connection parameters
46
- ConnectionAttributes string // Connection Attributes, comma-delimited string of user-defined "key:value" pairs
47
- Collation string // Connection collation
48
- Loc * time.Location // Location for time.Time values
49
- MaxAllowedPacket int // Max packet size allowed
50
- ServerPubKey string // Server public key name
51
- TLSConfig string // TLS configuration name
52
- TLS * tls.Config // TLS configuration, its priority is higher than TLSConfig
53
- Timeout time.Duration // Dial timeout
54
- ReadTimeout time.Duration // I/O read timeout
55
- WriteTimeout time.Duration // I/O write timeout
56
- Logger Logger // Logger
57
- BeforeConnect func (context.Context , * Config ) error // Invoked before a connection is established
40
+ User string // Username
41
+ Passwd string // Password (requires User)
42
+ Net string // Network (e.g. "tcp", "tcp6", "unix". default: "tcp")
43
+ Addr string // Address (default: "127.0.0.1:3306" for "tcp" and "/tmp/mysql.sock" for "unix")
44
+ DBName string // Database name
45
+ Params map [string ]string // Connection parameters
46
+ ConnectionAttributes string // Connection Attributes, comma-delimited string of user-defined "key:value" pairs
47
+ Collation string // Connection collation
48
+ Loc * time.Location // Location for time.Time values
49
+ MaxAllowedPacket int // Max packet size allowed
50
+ ServerPubKey string // Server public key name
51
+ TLSConfig string // TLS configuration name
52
+ TLS * tls.Config // TLS configuration, its priority is higher than TLSConfig
53
+ Timeout time.Duration // Dial timeout
54
+ ReadTimeout time.Duration // I/O read timeout
55
+ WriteTimeout time.Duration // I/O write timeout
56
+ Logger Logger // Logger
58
57
59
58
// boolean fields
60
59
@@ -73,8 +72,9 @@ type Config struct {
73
72
74
73
// unexported fields. new options should be come here
75
74
76
- pubKey * rsa.PublicKey // Server public key
77
- timeTruncate time.Duration // Truncate time.Time values to the specified duration
75
+ beforeConnect func (context.Context , * Config ) error // Invoked before a connection is established
76
+ pubKey * rsa.PublicKey // Server public key
77
+ timeTruncate time.Duration // Truncate time.Time values to the specified duration
78
78
}
79
79
80
80
// Functional Options Pattern
@@ -114,6 +114,14 @@ func TimeTruncate(d time.Duration) Option {
114
114
}
115
115
}
116
116
117
+ // BeforeConnect sets the function to be invoked before a connection is established.
118
+ func BeforeConnect (fn func (context.Context , * Config ) error ) Option {
119
+ return func (cfg * Config ) error {
120
+ cfg .beforeConnect = fn
121
+ return nil
122
+ }
123
+ }
124
+
117
125
func (cfg * Config ) Clone () * Config {
118
126
cp := * cfg
119
127
if cp .TLS != nil {
0 commit comments