29 lines
708 B
Go
29 lines
708 B
Go
package dbimpl
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana/pkg/util/xorm"
|
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
)
|
|
|
|
func getEngine(config *sqlstore.DatabaseConfig) (*xorm.Engine, error) {
|
|
switch config.Type {
|
|
case dbTypeMySQL, dbTypePostgres, dbTypeSQLite:
|
|
engine, err := xorm.NewEngine(config.Type, config.ConnectionString)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("open database: %w", err)
|
|
}
|
|
|
|
engine.SetMaxOpenConns(config.MaxOpenConn)
|
|
engine.SetMaxIdleConns(config.MaxIdleConn)
|
|
engine.SetConnMaxLifetime(time.Duration(config.ConnMaxLifetime) * time.Second)
|
|
|
|
return engine, nil
|
|
default:
|
|
return nil, fmt.Errorf("unsupported database type: %s", config.Type)
|
|
}
|
|
}
|