first commit
This commit is contained in:
78
utils/config.go
Normal file
78
utils/config.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
type RedisConfig struct {
|
||||
Host string
|
||||
Port string
|
||||
Password string
|
||||
Database string
|
||||
}
|
||||
|
||||
type DatabaseConfig struct {
|
||||
Host string
|
||||
Port string
|
||||
Username string
|
||||
Password string
|
||||
Name string
|
||||
}
|
||||
|
||||
func LoadEnv() error {
|
||||
err := godotenv.Load()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load .env file: %w", err)
|
||||
}
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func GetEnv(key string, defaultValue string) string {
|
||||
value := os.Getenv(key)
|
||||
if value == "" {
|
||||
return defaultValue
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
func DatabaseUrl() string {
|
||||
return fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable", GetEnv("DB_USERNAME", "postgres"),
|
||||
GetEnv("DB_PASSWORD", "postgres"), GetEnv("DB_HOST", "localhost"), GetEnv("DB_PORT", "5432"), GetEnv("DB_NAME", "postgres"))
|
||||
}
|
||||
|
||||
func RedisUrl() string {
|
||||
return fmt.Sprintf("%s:%s", GetEnv("REDIS_HOST", "localhost"), GetEnv("REDIS_PORT", "6379"))
|
||||
}
|
||||
|
||||
func LoadRedisConfig() (RedisConfig, error) {
|
||||
err := LoadEnv()
|
||||
if err != nil {
|
||||
return RedisConfig{}, err
|
||||
}
|
||||
|
||||
return RedisConfig{
|
||||
Host: GetEnv("REDIS_HOST", "localhost"),
|
||||
Port: GetEnv("REDIS_PORT", "6379"),
|
||||
Password: GetEnv("REDIS_PASSWORD", ""),
|
||||
Database: GetEnv("REDIS_DB", "0"),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func LoadDbConfig() (DatabaseConfig, error) {
|
||||
err := LoadEnv()
|
||||
if err != nil {
|
||||
return DatabaseConfig{}, err
|
||||
}
|
||||
|
||||
return DatabaseConfig{
|
||||
Host: GetEnv("POSTGRES_HOST", "localhost"),
|
||||
Port: GetEnv("POSTGRES_PORT", "5432"),
|
||||
Username: GetEnv("POSTGRES_USER", "postgres"),
|
||||
Password: GetEnv("POSTGRES_PASSWORD", "password"),
|
||||
Name: GetEnv("POSTGRES_DB", "ferurl"),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user