dbUp.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package cmd
  2. import (
  3. "fmt"
  4. "go-nc/internal/bootstrap/boots"
  5. "go-nc/model"
  6. "os"
  7. "github.com/spf13/cobra"
  8. "go.uber.org/zap"
  9. "gorm.io/gorm"
  10. )
  11. var dbUpCmd = &cobra.Command{
  12. Use: "dbUp",
  13. Short: "dp.",
  14. Long: "数据库DB上传到数据库中",
  15. Run: runDbUp,
  16. }
  17. func init() {
  18. rootCmd.AddCommand(dbUpCmd)
  19. }
  20. func runDbUp(cmd *cobra.Command, args []string) {
  21. // TODO 这里处理dbUp子命令
  22. // 初始化配置
  23. boots.InitConfig()
  24. // 初始化日志
  25. log := boots.InitLog()
  26. // 初始化数据库
  27. db := boots.InitDB()
  28. // 自动迁移 User 模型
  29. if err := db.AutoMigrate(model.Models...); err != nil {
  30. log.Error("DB 表创建失败", zap.Error(err))
  31. } else {
  32. log.Info("DB 表创建成功")
  33. }
  34. // 构建 SQL 文件路径
  35. // projectRoot := utils.GetProjectRoot()
  36. // sqlFilePath := filepath.Join(projectRoot, "model/sql/initData.sql")
  37. // if _, err := os.Stat(sqlFilePath); err != nil {
  38. // sqlFilePath = utils.GetExePath() + "/configs/initData.sql"
  39. // }
  40. // // 执行 SQL 文件
  41. // executeSQLFile(db, sqlFilePath)
  42. // 释放数据库连接
  43. defer closeDBConnection(db)
  44. os.Exit(0)
  45. }
  46. // 执行 SQL 文件
  47. func executeSQLFile(db *gorm.DB, sqlFilePath string) {
  48. logger := boots.InitLogger()
  49. content, err := os.ReadFile(sqlFilePath)
  50. if err != nil {
  51. logger.Error("SQL: 读取初始SQL数据文件失败", zap.Error(err))
  52. return
  53. }
  54. err = db.Exec(string(content)).Error
  55. if err != nil {
  56. logger.Error("SQL: 执行初始SQL数据文件失败", zap.Error(err))
  57. return
  58. }
  59. logger.Info("SQL:执行初始SQL数据文件成功!")
  60. }
  61. func closeDBConnection(db *gorm.DB) {
  62. if db != nil {
  63. dbDB, err := db.DB()
  64. if err == nil {
  65. // 关闭数据库连接
  66. fmt.Println("数据库连接已关闭")
  67. dbDB.Close()
  68. }
  69. }
  70. }