healthapp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

50 lines
1.3 KiB

package database
import (
"fmt"
"health-ai/internal/config"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var DB *gorm.DB
func InitDatabase(cfg *config.DatabaseConfig) error {
var err error
gormConfig := &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
}
switch cfg.Driver {
case "sqlite":
DB, err = gorm.Open(sqlite.Open(cfg.SQLite.Path), gormConfig)
case "postgres":
// TODO: 添加 PostgreSQL 支持
// dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
// cfg.Postgres.Host, cfg.Postgres.Port, cfg.Postgres.User, cfg.Postgres.Password, cfg.Postgres.DBName)
// DB, err = gorm.Open(postgres.Open(dsn), gormConfig)
return fmt.Errorf("postgres driver not implemented yet")
case "mysql":
// TODO: 添加 MySQL 支持
// dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
// cfg.MySQL.User, cfg.MySQL.Password, cfg.MySQL.Host, cfg.MySQL.Port, cfg.MySQL.DBName)
// DB, err = gorm.Open(mysql.Open(dsn), gormConfig)
return fmt.Errorf("mysql driver not implemented yet")
default:
return fmt.Errorf("unsupported database driver: %s", cfg.Driver)
}
return err
}
func AutoMigrate(models ...interface{}) error {
return DB.AutoMigrate(models...)
}
func GetDB() *gorm.DB {
return DB
}