2024-09-02 18:07:30 +00:00

51 lines
1.7 KiB
Go

package main
import (
"context"
"github.com/nose7en/ToyBoomServer/common"
"github.com/nose7en/ToyBoomServer/config"
"github.com/nose7en/ToyBoomServer/models"
"github.com/nose7en/ToyBoomServer/storage"
"github.com/glebarez/sqlite"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func initDatabase() {
c := context.Background()
common.Logger(c).Infof("start to init database, type: %s", config.GetSettings().DB.Type)
storage.MustInitDBManager(nil, config.GetSettings().DB.Type)
switch config.GetSettings().DB.Type {
case "sqlite":
if sqlitedb, err := gorm.Open(sqlite.Open(config.GetSettings().DB.DSN), &gorm.Config{}); err != nil {
common.Logger(c).Panic(err)
} else {
storage.GetDBManager().SetDB("sqlite", storage.DefaultDBName, sqlitedb)
common.Logger(c).Infof("init database success, data location: [%s]", config.GetSettings().DB.DSN)
}
case "mysql":
if mysqlDB, err := gorm.Open(mysql.Open(config.GetSettings().DB.DSN), &gorm.Config{}); err != nil {
common.Logger(c).Panic(err)
} else {
storage.GetDBManager().SetDB("mysql", storage.DefaultDBName, mysqlDB)
common.Logger(c).Infof("init database success, data type: [%s]", "mysql")
}
case "postgres":
if postgresDB, err := gorm.Open(postgres.Open(config.GetSettings().DB.DSN), &gorm.Config{}); err != nil {
common.Logger(c).Panic(err)
} else {
storage.GetDBManager().SetDB("postgres", storage.DefaultDBName, postgresDB)
common.Logger(c).Infof("init database success, data type: [%s]", "postgres")
}
default:
common.Logger(c).Panicf("currently unsupported database type: %s", config.GetSettings().DB.Type)
}
storage.GetDBManager().Init(models.Models()...)
}