migrate.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // database initial and migrate
  2. package mysql
  3. import (
  4. "fmt"
  5. "sparrow/pkg/models"
  6. _ "github.com/go-sql-driver/mysql"
  7. "github.com/jinzhu/gorm"
  8. )
  9. func MigrateDatabase(dbhost, dbport, dbname, dbuser, dbpass string) error {
  10. mysqldb, err := GetClient(dbhost, dbport, dbname, dbuser, dbpass)
  11. if err != nil {
  12. return err
  13. }
  14. db, err := gorm.Open("mysql", mysqldb)
  15. if err != nil {
  16. return err
  17. }
  18. // Then you could invoke `*sql.DB`'s functions with it
  19. err = db.DB().Ping()
  20. if err != nil {
  21. return err
  22. }
  23. // Disable table name's pluralization
  24. db.SingularTable(true)
  25. db.LogMode(false)
  26. db.DB().Query("CREATE DATABASE SparrowCloud; ")
  27. db.DB().Query("USE SparrowCloud;")
  28. // Automating Migration
  29. err = db.Set("gorm:table_options", "ENGINE=MyISAM").AutoMigrate(
  30. &models.Device{},
  31. &models.Product{},
  32. &models.Vendor{},
  33. &models.Application{},
  34. &models.Rule{},
  35. &models.User{},
  36. &models.Privilege{},
  37. &models.Role{},
  38. &models.Protocal{},
  39. &models.AlarmRule{},
  40. ).Error
  41. if err != nil {
  42. fmt.Printf("%s", err.Error())
  43. }
  44. return nil
  45. }