| package config |
|
|
| import ( |
| "log" |
| "os" |
| "strconv" |
|
|
| "github.com/joho/godotenv" |
| ) |
|
|
| type Config struct { |
| DatabaseURL string |
| TripayMerchantCode string |
| TripayAPIKey string |
| TripayPrivateKey string |
| TripayIsProduction bool |
| TripayProxyURL string |
| AppPort int |
| Port string |
| AppBaseURL string |
| JWTSecretKey string |
| JWTExpiryHours int |
| FonnteToken string |
| StoreName string |
| CloudinaryCloudName string |
| CloudinaryAPIKey string |
| CloudinaryAPISecret string |
| } |
|
|
| var GlobalConfig *Config |
|
|
| func LoadConfig() { |
| |
| if err := godotenv.Load(); err != nil { |
| log.Println("Info: File .env tidak ditemukan, menggunakan variable OS") |
| } |
|
|
| GlobalConfig = &Config{ |
| DatabaseURL: getEnv("DATABASE_URL", "postgresql://warungpos:warungpos123@db:5432/warungpos_db"), |
| TripayMerchantCode: getEnv("TRIPAY_MERCHANT_CODE", ""), |
| TripayAPIKey: getEnv("TRIPAY_API_KEY", ""), |
| TripayPrivateKey: getEnv("TRIPAY_PRIVATE_KEY", ""), |
| TripayIsProduction: getEnvBool("TRIPAY_IS_PRODUCTION", true), |
| TripayProxyURL: getEnv("TRIPAY_PROXY_URL", ""), |
| AppPort: getEnvInt("APP_PORT", 8003), |
| Port: getEnv("PORT", "7860"), |
| AppBaseURL: getEnv("APP_BASE_URL", "http://localhost:8003"), |
| JWTSecretKey: getEnv("JWT_SECRET_KEY", "default-secret-key-change-me"), |
| JWTExpiryHours: getEnvInt("JWT_EXPIRY_HOURS", 24), |
| FonnteToken: getEnv("FONNTE_TOKEN", ""), |
| StoreName: "XOGM Go", |
| CloudinaryCloudName: getEnv("CLOUDINARY_CLOUD_NAME", ""), |
| CloudinaryAPIKey: getEnv("CLOUDINARY_API_KEY", ""), |
| CloudinaryAPISecret: getEnv("CLOUDINARY_API_SECRET", ""), |
| } |
| } |
|
|
| func getEnv(key, fallback string) string { |
| if value, exists := os.LookupEnv(key); exists { |
| return value |
| } |
| return fallback |
| } |
|
|
| func getEnvInt(key string, fallback int) int { |
| str := getEnv(key, "") |
| if str == "" { |
| return fallback |
| } |
| val, err := strconv.Atoi(str) |
| if err != nil { |
| return fallback |
| } |
| return val |
| } |
|
|
| func getEnvBool(key string, fallback bool) bool { |
| str := getEnv(key, "") |
| if str == "" { |
| return fallback |
| } |
| val, err := strconv.ParseBool(str) |
| if err != nil { |
| return fallback |
| } |
| return val |
| } |
|
|