feat: orm suppert SetConnMaxIdleTime (#5580)

This commit is contained in:
Ather Shu 2024-02-05 11:24:40 +08:00 committed by GitHub
parent 426aad68dc
commit 30278539a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View File

@ -289,6 +289,7 @@ type alias struct {
MaxIdleConns int MaxIdleConns int
MaxOpenConns int MaxOpenConns int
ConnMaxLifetime time.Duration ConnMaxLifetime time.Duration
ConnMaxIdletime time.Duration
StmtCacheSize int StmtCacheSize int
DB *DB DB *DB
DbBaser dbBaser DbBaser dbBaser
@ -447,6 +448,11 @@ func (al *alias) SetConnMaxLifetime(lifeTime time.Duration) {
al.DB.DB.SetConnMaxLifetime(lifeTime) al.DB.DB.SetConnMaxLifetime(lifeTime)
} }
func (al *alias) SetConnMaxIdleTime(idleTime time.Duration) {
al.ConnMaxIdletime = idleTime
al.DB.DB.SetConnMaxIdleTime(idleTime)
}
// AddAliasWthDB add a aliasName for the drivename // AddAliasWthDB add a aliasName for the drivename
func AddAliasWthDB(aliasName, driverName string, db *sql.DB, params ...DBOption) error { func AddAliasWthDB(aliasName, driverName string, db *sql.DB, params ...DBOption) error {
_, err := addAliasWthDB(aliasName, driverName, db, params...) _, err := addAliasWthDB(aliasName, driverName, db, params...)
@ -591,6 +597,13 @@ func ConnMaxLifetime(v time.Duration) DBOption {
} }
} }
// ConnMaxIdletime return a hint about ConnMaxIdletime
func ConnMaxIdletime(v time.Duration) DBOption {
return func(al *alias) {
al.SetConnMaxIdleTime(v)
}
}
// MaxStmtCacheSize return a hint about MaxStmtCacheSize // MaxStmtCacheSize return a hint about MaxStmtCacheSize
func MaxStmtCacheSize(v int) DBOption { func MaxStmtCacheSize(v int) DBOption {
return func(al *alias) { return func(al *alias) {

View File

@ -25,7 +25,8 @@ func TestRegisterDataBase(t *testing.T) {
err := RegisterDataBase("test-params", DBARGS.Driver, DBARGS.Source, err := RegisterDataBase("test-params", DBARGS.Driver, DBARGS.Source,
MaxIdleConnections(20), MaxIdleConnections(20),
MaxOpenConnections(300), MaxOpenConnections(300),
ConnMaxLifetime(time.Minute)) ConnMaxLifetime(time.Minute),
ConnMaxIdletime(time.Minute))
assert.Nil(t, err) assert.Nil(t, err)
al := getDbAlias("test-params") al := getDbAlias("test-params")
@ -33,6 +34,7 @@ func TestRegisterDataBase(t *testing.T) {
assert.Equal(t, al.MaxIdleConns, 20) assert.Equal(t, al.MaxIdleConns, 20)
assert.Equal(t, al.MaxOpenConns, 300) assert.Equal(t, al.MaxOpenConns, 300)
assert.Equal(t, al.ConnMaxLifetime, time.Minute) assert.Equal(t, al.ConnMaxLifetime, time.Minute)
assert.Equal(t, al.ConnMaxIdletime, time.Minute)
} }
func TestRegisterDataBaseMaxStmtCacheSizeNegative1(t *testing.T) { func TestRegisterDataBaseMaxStmtCacheSizeNegative1(t *testing.T) {