61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/go-redis/redis/v8"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Config struct {
|
|
DBHost string
|
|
DBPort string
|
|
DBUser string
|
|
DBPassword string
|
|
DBName string
|
|
RedisAddr string
|
|
RedisPass string
|
|
RedisDB int
|
|
ServerPort string
|
|
}
|
|
|
|
func LoadConfig() *Config {
|
|
return &Config{
|
|
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"),
|
|
RedisAddr: os.Getenv("REDIS_ADDR"),
|
|
RedisPass: os.Getenv("REDIS_PASS"),
|
|
RedisDB: 0,
|
|
ServerPort: os.Getenv("SERVER_PORT"),
|
|
}
|
|
}
|
|
|
|
func InitDB(cfg *Config) *gorm.DB {
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
|
cfg.DBUser, cfg.DBPassword, cfg.DBHost, cfg.DBPort, cfg.DBName)
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatalf("Failed to connect to database: %v", err)
|
|
}
|
|
return db
|
|
}
|
|
|
|
func InitRedis(cfg *Config) *redis.Client {
|
|
rdb := redis.NewClient(&redis.Options{
|
|
Addr: cfg.RedisAddr,
|
|
Password: cfg.RedisPass,
|
|
DB: cfg.RedisDB,
|
|
})
|
|
_, err := rdb.Ping(rdb.Context()).Result()
|
|
if err != nil {
|
|
log.Fatalf("Failed to connect to Redis: %v", err)
|
|
}
|
|
return rdb
|
|
}
|