zhangkun9038@dingtalk.com 375b305ab4 aliyun-deepseek-r1
2025-02-20 11:29:57 +08:00

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
}