NAM-APJATEL-BACKEND/manager/infra_manager.go

45 lines
832 B
Go

package manager
import (
"fmt"
"users_management/m/config"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
type InfraManager interface {
Conn() *gorm.DB
}
type infraManager struct {
db *gorm.DB
cfg *config.Config
}
func (im *infraManager) openConn() error {
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Shanghai",
im.cfg.DBHost, im.cfg.DBUser, im.cfg.DBPass, im.cfg.DBName, im.cfg.DBPort)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
return err
}
im.db = db
return nil
}
func NewInfraManager(cfg *config.Config) (InfraManager, error) {
im := &infraManager{
cfg: cfg,
}
err := im.openConn()
if err != nil {
panic(err)
}
return im, nil
}
func (im *infraManager) Conn() *gorm.DB {
return im.db
}