package dao import ( "VideoStream/proto" "fmt" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" ) var DB *gorm.DB func Init() error { var db *gorm.DB var err error var dsn string if proto.Config.DB == 0 { dsn = proto.Config.MYSQL_DSN db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) } else if proto.Config.DB == 1 { dsn = proto.Config.PG_DSN db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{}) } if err != nil { panic("failed to connect database") return err } err = db.AutoMigrate(&User{}) if err != nil { fmt.Println("user table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&Device{}) if err != nil { fmt.Println("device table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 DB = db return err } func Close() { sqlDB, err := DB.DB() if err != nil { panic("failed to connect database") } sqlDB.Close() }