41 lines
927 B
Go
41 lines
927 B
Go
package configs
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
|
|
entsql "entgo.io/ent/dialect/sql"
|
|
logger "github.com/rs/zerolog/log"
|
|
|
|
"online-order/ent"
|
|
)
|
|
|
|
func NewDBConnection() *ent.Client {
|
|
conf := LoadConfigEnv() //Load .env settings
|
|
|
|
// Start by connecting to database
|
|
dbSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", conf.DbUser, conf.DbPassword, conf.DbHost, conf.DbPort, conf.DbName)
|
|
db, err := open(dbSource)
|
|
if err != nil {
|
|
log.Panic("Database error: ... ", err.Error())
|
|
}
|
|
logger.Info().Msg("Database creation ...")
|
|
return db
|
|
}
|
|
|
|
// To create new database connection
|
|
func open(source string) (*ent.Client, error) {
|
|
db, err := sql.Open("mysql", source)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
db.SetMaxIdleConns(10)
|
|
db.SetMaxOpenConns(100)
|
|
db.SetConnMaxLifetime(time.Hour)
|
|
// Create an ent.Driver from `db`.
|
|
drv := entsql.OpenDB("mysql", db)
|
|
return ent.NewClient(ent.Driver(drv)), nil
|
|
}
|