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=require 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 }