api-qobiltu-dev / config /database_connection_config.go
lifedebugger's picture
Deploy files from GitHub repository
57e875f
package config
import (
"fmt"
"log"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"api.qobiltu.id/models"
"github.com/joho/godotenv"
)
var DB *gorm.DB
var err error
var Salt string
func init() {
godotenv.Load()
if err != nil {
fmt.Println("Gagal membaca file .env")
return
}
os.Setenv("TZ", "Asia/Jakarta")
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPassword := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
Salt := os.Getenv("SALT")
dsn := "host=" + dbHost + " user=" + dbUser + " password=" + dbPassword + " dbname=" + dbName + " port=" + dbPort + " sslmode=disable TimeZone=Asia/Jakarta"
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{TranslateError: true})
if err != nil {
panic(err)
}
if Salt == "" {
Salt = "D3f4u|t"
}
// Call AutoMigrateAll to perform auto-migration
AutoMigrateAll(DB)
}
func AutoMigrateAll(db *gorm.DB) {
// Enable logger to see SQL logs
db.Logger.LogMode(logger.Info)
// Auto-migrate all models
err := db.AutoMigrate(
&models.Account{},
&models.AccountDetails{},
&models.EmailVerification{},
&models.ExternalAuth{},
&models.FCM{},
&models.ForgotPassword{},
&models.Academy{},
&models.AcademyMaterial{},
&models.AcademyMaterialProgress{},
&models.RegionCity{},
&models.RegionProvince{},
&models.OptionCategory{},
&models.OptionValues{},
&models.Quiz{},
&models.Question{},
&models.Answer{},
&models.QuizAttempt{},
&models.UserAnswer{},
&models.PersonalityAndPreferenceCV{},
&models.FamilyMemberCV{},
&models.PhysicalAndHealthCV{},
&models.WorshipAndReligiousUnderstandingCV{},
&models.EducationCV{},
&models.JobCV{},
&models.AchievementCV{},
&models.MarriageReadinessProfile{},
&models.PartnerCriteria{},
)
if err != nil {
log.Fatal(err)
}
sequences := []string{
`CREATE SEQUENCE IF NOT EXISTS seq_ikh_counter START 1 INCREMENT 1 MINVALUE 1;`,
`CREATE SEQUENCE IF NOT EXISTS seq_akh_counter START 1 INCREMENT 1 MINVALUE 1;`,
}
for _, seq := range sequences {
if err := db.Exec(seq).Error; err != nil {
fmt.Printf("Gagal membuat sequence: %v", err)
}
}
fmt.Println("Auto-migration sequence check completed successfully")
}