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
MaxOpenConns int
ConnMaxLifetime time.Duration
ConnMaxIdletime time.Duration
StmtCacheSize int
DB *DB
DbBaser dbBaser
@ -447,6 +448,11 @@ func (al *alias) SetConnMaxLifetime(lifeTime time.Duration) {
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
func AddAliasWthDB(aliasName, driverName string, db *sql.DB, params ...DBOption) error {
_, 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
func MaxStmtCacheSize(v int) DBOption {
return func(al *alias) {

View File

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