75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/pahmiudahgede/senggoldong/domain"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var (
|
|
DB *gorm.DB
|
|
DBHost string
|
|
DBPort string
|
|
DBName string
|
|
DBUser string
|
|
DBPassword string
|
|
|
|
APIKey string
|
|
ServerHost string
|
|
ServerPort string
|
|
)
|
|
|
|
func InitConfig() {
|
|
ServerHost = os.Getenv("SERVER_HOST")
|
|
ServerPort = os.Getenv("SERVER_PORT")
|
|
DBHost = os.Getenv("DB_HOST")
|
|
DBPort = os.Getenv("DB_PORT")
|
|
DBName = os.Getenv("DB_NAME")
|
|
DBUser = os.Getenv("DB_USER")
|
|
DBPassword = os.Getenv("DB_PASSWORD")
|
|
APIKey = os.Getenv("API_KEY")
|
|
|
|
if ServerHost == "" || ServerPort == "" || DBHost == "" || DBPort == "" || DBName == "" || DBUser == "" || DBPassword == "" || APIKey == "" {
|
|
log.Fatal("Error: environment variables yang dibutuhkan tidak ada")
|
|
}
|
|
}
|
|
|
|
func InitDatabase() {
|
|
InitConfig()
|
|
|
|
dsn := fmt.Sprintf("host=%s port=%s user=%s dbname=%s password=%s sslmode=disable",
|
|
DBHost, DBPort, DBUser, DBName, DBPassword)
|
|
|
|
var err error
|
|
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatal("gagal terhubung ke database: ", err)
|
|
}
|
|
|
|
err = DB.AutoMigrate(
|
|
&domain.Point{},
|
|
&domain.User{},
|
|
&domain.UserRole{},
|
|
&domain.UserPin{},
|
|
&domain.MenuAccess{},
|
|
&domain.PlatformHandle{},
|
|
&domain.Address{},
|
|
&domain.Article{},
|
|
&domain.TrashCategory{},
|
|
&domain.TrashDetail{},
|
|
&domain.Banner{},
|
|
&domain.CoverageArea{},
|
|
&domain.CoverageDistric{},
|
|
&domain.CoverageSubdistrict{},
|
|
)
|
|
if err != nil {
|
|
log.Fatal("Error: Failed to auto migrate domain:", err)
|
|
}
|
|
|
|
fmt.Println("Koneksi ke database berhasil dan migrasi dilakukan")
|
|
}
|