51 lines
1.7 KiB
Go
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()...)
|
|
}
|