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 }