package data import ( "nixcn-cms/data/drivers" "github.com/redis/go-redis/v9" log "github.com/sirupsen/logrus" "github.com/spf13/viper" ) var Database *drivers.DBClient var Redis redis.UniversalClient func Init() { // Init database dbType := viper.GetString("database.type") exDSN := drivers.ExternalDSN{ Host: viper.GetString("database.host"), Name: viper.GetString("database.name"), Username: viper.GetString("database.username"), Password: viper.GetString("database.password"), } if dbType != "postgres" { log.Fatal("[Database] Only support postgras db!") } // Conect to db db, err := drivers.Postgres(exDSN) if err != nil { log.Fatal("[Database] Error connecting to db!") } // Auto migrate err = db.DB.AutoMigrate(&User{}) if err != nil { log.Error("[Database] Error migrating database: ", err) } Database = db // Init redis conection rdbAddress := viper.GetStringSlice("cache.hosts") dsn := drivers.RedisDSN{ Hosts: rdbAddress, Master: viper.GetString("cache.master"), Username: viper.GetString("cache.username"), Password: viper.GetString("cache.password"), DB: viper.GetInt("cache.db"), } rdb, err := drivers.Redis(dsn) if err != nil { log.Fatal("[Redis] Error connecting to Redis: ", err) } Redis = rdb }