diff --git a/client/orm/db_alias.go b/client/orm/db_alias.go index beabc267..0a815627 100644 --- a/client/orm/db_alias.go +++ b/client/orm/db_alias.go @@ -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) { diff --git a/client/orm/db_alias_test.go b/client/orm/db_alias_test.go index b5d53464..8632d819 100644 --- a/client/orm/db_alias_test.go +++ b/client/orm/db_alias_test.go @@ -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) {