32 lines
551 B
Go
32 lines
551 B
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
_ "github.com/lib/pq"
|
|
"xorm.io/xorm"
|
|
"xorm.io/xorm/log"
|
|
)
|
|
|
|
func Open(dataSourceName string, debug bool) (*xorm.Engine, error) {
|
|
engine, err := xorm.NewEngine("postgres", dataSourceName)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("open db: %w", err)
|
|
}
|
|
|
|
if debug {
|
|
engine.SetLogLevel(log.LOG_DEBUG)
|
|
} else {
|
|
engine.SetLogLevel(log.LOG_WARNING)
|
|
}
|
|
|
|
engine.SetMaxOpenConns(25)
|
|
engine.SetMaxIdleConns(5)
|
|
|
|
if err := engine.Ping(); err != nil {
|
|
return nil, fmt.Errorf("ping db: %w", err)
|
|
}
|
|
|
|
return engine, nil
|
|
}
|