forked from nixcn/nixcn-cms
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
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{}, &Event{})
|
|
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
|
|
}
|