package database import ( "fmt" "time" "gitlab.com/mbugroup/lti-api.git/internal/config" "gitlab.com/mbugroup/lti-api.git/internal/utils" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) func Connect(dbHost, dbName string) *gorm.DB { dsn := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai", dbHost, config.DBUser, config.DBPassword, dbName, config.DBPort, ) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), SkipDefaultTransaction: true, PrepareStmt: true, TranslateError: true, }) if err != nil { utils.Log.Errorf("Failed to connect to database: %+v", err) } sqlDB, errDB := db.DB() if errDB != nil { utils.Log.Errorf("Failed to connect to database: %+v", errDB) } // Config connection pooling sqlDB.SetMaxIdleConns(10) sqlDB.SetMaxOpenConns(100) sqlDB.SetConnMaxLifetime(60 * time.Minute) return db }