Files
cms-server/data/data.go
Asai Neko 94f721bd8e
All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Add Agenda data struct to db AutoMigrate
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-03-26 16:56:59 +08:00

64 lines
1.5 KiB
Go

package data
import (
"context"
"nixcn-cms/data/drivers"
"os"
"log/slog"
"github.com/redis/go-redis/v9"
"github.com/spf13/viper"
"gorm.io/gorm"
)
var Database *gorm.DB
var Redis redis.UniversalClient
func Init(ctx context.Context) {
// 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" {
slog.ErrorContext(ctx, "[Database] Only support postgras db!")
os.Exit(1)
}
// Conect to db
db, err := drivers.Postgres(exDSN)
if err != nil {
slog.ErrorContext(ctx, "[Database] Error connecting to db!", "err", err)
os.Exit(1)
}
// Auto migrate
err = db.AutoMigrate(&User{}, &Event{}, &Attendance{}, &Client{}, &Kyc{}, &Agenda{})
if err != nil {
slog.ErrorContext(ctx, "[Database] Error migrating database!", "err", err)
os.Exit(1)
}
Database = db
// Init redis conection
rdbAddress := viper.GetStringSlice("cache.hosts")
rDSN := 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(rDSN)
if err != nil {
slog.ErrorContext(ctx, "[Redis] Error connecting to Redis!", "err", err)
os.Exit(1)
}
Redis = rdb
}