init.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package migration
  2. import (
  3. "IotAdmin/core/sdk"
  4. "IotAdmin/core/sdk/config"
  5. "IotAdmin/core/sdk/pkg"
  6. "IotAdmin/migration/models"
  7. "bytes"
  8. "fmt"
  9. "html/template"
  10. "strconv"
  11. "time"
  12. )
  13. func GenFile(vbAdmin bool) error {
  14. t1, err := template.ParseFiles("template/migrate.template")
  15. if err != nil {
  16. return err
  17. }
  18. m := map[string]string{}
  19. m["GenerateTime"] = strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
  20. m["Package"] = "version_local"
  21. if vbAdmin {
  22. m["Package"] = "version"
  23. }
  24. var b1 bytes.Buffer
  25. err = t1.Execute(&b1, m)
  26. if vbAdmin {
  27. pkg.FileCreate(b1, "./migration/version/"+m["GenerateTime"]+"_migrate.go")
  28. } else {
  29. pkg.FileCreate(b1, "./migration/version-local/"+m["GenerateTime"]+"_migrate.go")
  30. }
  31. return nil
  32. }
  33. func MigrateModel(host string) error {
  34. if host == "" {
  35. host = "*"
  36. }
  37. db := sdk.Runtime.GetDbByKey(host)
  38. if db == nil {
  39. if len(sdk.Runtime.GetDb()) == 1 && host == "*" {
  40. for k, v := range sdk.Runtime.GetDb() {
  41. db = v
  42. host = k
  43. break
  44. }
  45. }
  46. }
  47. if db == nil {
  48. return fmt.Errorf("未找到数据库配置")
  49. }
  50. if config.DatabasesConfig[host].Driver == "mysql" {
  51. //初始化数据库时候用
  52. db.Set("gorm:table_options", "ENGINE=InnoDB CHARSET=utf8mb4")
  53. }
  54. err := db.Debug().AutoMigrate(&models.Migration{})
  55. if err != nil {
  56. return err
  57. }
  58. Migrate.SetDb(db.Debug())
  59. Migrate.Migrate()
  60. return err
  61. }