| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package utils
- import (
- "context"
- "fmt"
- "go-policy-service/config"
- "time"
- "github.com/go-redis/redis/v8"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- )
- var Db *gorm.DB
- var Rdb *redis.Client
- func InitDB(cfg *config.Config) error {
- dsn := getDSN(cfg)
- conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
- if err != nil {
- return err
- }
- Db = conn
- return nil
- }
- func getDSN(cfg *config.Config) string {
- return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4",
- cfg.DBUser,
- cfg.DBPassword,
- cfg.DBHost,
- cfg.DBPort,
- cfg.DBName)
- }
- // 初始化 Redis
- func InitRedis(cfg *config.Config) error {
- Rdb = redis.NewClient(&redis.Options{
- Addr: fmt.Sprintf("%s:%d", cfg.RedisHost, cfg.RedisPort),
- Password: cfg.RedisPassword,
- DB: cfg.RedisDB,
- })
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- if _, err := Rdb.Ping(ctx).Result(); err != nil {
- return fmt.Errorf("redis connection failed: %w", err)
- }
- return nil
- }
|