@ -58,45 +58,56 @@ func NewRawEntClient(l logging.Logger, config conf.ConfigProvider) (*ent.Client,
client * sql . Driver
)
switch confDBType {
case conf . SQLiteDB :
dbFile := util . RelativePath ( dbConfig . DBFile )
l . Info ( "Connect to SQLite database %q." , dbFile )
client , err = sql . Open ( "sqlite3" , util . RelativePath ( dbConfig . DBFile ) )
case conf . PostgresDB :
l . Info ( "Connect to Postgres database %q." , dbConfig . Host )
client , err = sql . Open ( "postgres" , fmt . Sprintf ( "host=%s user=%s password=%s dbname=%s port=%d sslmode=disable" ,
dbConfig . Host ,
dbConfig . User ,
dbConfig . Password ,
dbConfig . Name ,
dbConfig . Port ) )
case conf . MySqlDB , conf . MsSqlDB :
l . Info ( "Connect to MySQL/SQLServer database %q." , dbConfig . Host )
var host string
if dbConfig . UnixSocket {
host = fmt . Sprintf ( "unix(%s)" ,
dbConfig . Host )
} else {
host = fmt . Sprintf ( "(%s:%d)" ,
// Check if the database type is supported.
if confDBType != conf . SQLiteDB && confDBType != conf . MySqlDB && confDBType != conf . PostgresDB {
return nil , fmt . Errorf ( "unsupported database type: %s" , confDBType )
}
// If Database connection string provided, use it directly.
if dbConfig . DatabaseURL != "" {
l . Info ( "Connect to database with connection string %q." , dbConfig . DatabaseURL )
client , err = sql . Open ( string ( confDBType ) , dbConfig . DatabaseURL )
} else {
switch confDBType {
case conf . SQLiteDB :
dbFile := util . RelativePath ( dbConfig . DBFile )
l . Info ( "Connect to SQLite database %q." , dbFile )
client , err = sql . Open ( "sqlite3" , util . RelativePath ( dbConfig . DBFile ) )
case conf . PostgresDB :
l . Info ( "Connect to Postgres database %q." , dbConfig . Host )
client , err = sql . Open ( "postgres" , fmt . Sprintf ( "host=%s user=%s password=%s dbname=%s port=%d sslmode=allow" ,
dbConfig . Host ,
dbConfig . Port )
dbConfig . User ,
dbConfig . Password ,
dbConfig . Name ,
dbConfig . Port ) )
case conf . MySqlDB , conf . MsSqlDB :
l . Info ( "Connect to MySQL/SQLServer database %q." , dbConfig . Host )
var host string
if dbConfig . UnixSocket {
host = fmt . Sprintf ( "unix(%s)" ,
dbConfig . Host )
} else {
host = fmt . Sprintf ( "(%s:%d)" ,
dbConfig . Host ,
dbConfig . Port )
}
client , err = sql . Open ( string ( confDBType ) , fmt . Sprintf ( "%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local" ,
dbConfig . User ,
dbConfig . Password ,
host ,
dbConfig . Name ,
dbConfig . Charset ) )
default :
return nil , fmt . Errorf ( "unsupported database type %q" , confDBType )
}
client , err = sql . Open ( string ( confDBType ) , fmt . Sprintf ( "%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local" ,
dbConfig . User ,
dbConfig . Password ,
host ,
dbConfig . Name ,
dbConfig . Charset ) )
default :
return nil , fmt . Errorf ( "unsupported database type %q" , confDBType )
}
if err != nil {
return nil , fmt . Errorf ( "failed to open database: %w" , err )
}
if err != nil {
return nil , fmt . Errorf ( "failed to open database: %w" , err )
}
// Set connection pool
db := client . DB ( )
db . SetMaxIdleConns ( 50 )