server.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package migrate
  2. import (
  3. "device-manage/cmd/migrate/migration"
  4. _ "device-manage/cmd/migrate/migration/version"
  5. "device-manage/common/database"
  6. "device-manage/common/global"
  7. "device-manage/common/models"
  8. "device-manage/pkg/logger"
  9. "device-manage/tools/config"
  10. "fmt"
  11. "github.com/spf13/cobra"
  12. )
  13. var (
  14. configYml string
  15. exec bool
  16. StartCmd = &cobra.Command{
  17. Use: "migrate",
  18. Short: "Initialize the database",
  19. Example: "device-manage migrate -c config/settings.yml",
  20. Run: func(cmd *cobra.Command, args []string) {
  21. run()
  22. },
  23. }
  24. )
  25. func init() {
  26. StartCmd.PersistentFlags().StringVarP(&configYml, "config", "c", "config/settings.yml", "Start server with provided configuration file")
  27. //StartCmd.PersistentFlags().BoolVarP(&exec, "exec", "e", false, "exec script")
  28. }
  29. func run() {
  30. usage := `start init`
  31. fmt.Println(usage)
  32. //1. 读取配置
  33. config.Setup(configYml)
  34. //2. 设置日志
  35. logger.Setup()
  36. //3. 初始化数据库链接
  37. database.Setup(config.DatabaseConfig.Driver)
  38. //4. 数据库迁移
  39. fmt.Println("数据库迁移开始")
  40. _ = migrateModel()
  41. //fmt.Println("数据库结构初始化成功!")
  42. //5. 数据初始化完成
  43. //if err := models.InitDb(); err != nil {
  44. // global.Logger.Fatalf("数据库基础数据初始化失败!error: %v ", err)
  45. //}
  46. usage = `数据库基础数据初始化成功`
  47. fmt.Println(usage)
  48. }
  49. func migrateModel() error {
  50. if config.DatabaseConfig.Driver == "mysql" {
  51. global.Eloquent.Set("gorm:table_options", "ENGINE=InnoDB CHARSET=utf8mb4")
  52. }
  53. err := global.Eloquent.Debug().AutoMigrate(&models.Migration{})
  54. if err != nil {
  55. return err
  56. }
  57. migration.Migrate.SetDb(global.Eloquent.Debug())
  58. migration.Migrate.Migrate()
  59. return err
  60. }