online-order/configs/database.go

41 lines
927 B
Go
Raw Permalink Normal View History

2023-10-27 09:51:58 +00:00
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
}