setup.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "log/slog"
  6. )
  7. import (
  8. "gorm.io/driver/postgres"
  9. "gorm.io/gorm"
  10. )
  11. import (
  12. "resource-server/common"
  13. "resource-server/logger"
  14. )
  15. var (
  16. DB *gorm.DB
  17. err error
  18. )
  19. func panicHelper(err error) {
  20. if err != nil {
  21. panic(err)
  22. }
  23. }
  24. func migrate() {
  25. panicHelper(DB.AutoMigrate(&User{}))
  26. var user User
  27. err := DB.First(&user).Error
  28. if errors.Is(err, gorm.ErrRecordNotFound) {
  29. newAdmin := User{Name: "admin"}
  30. newAdmin.GenerateFromPassword([]byte("123456"))
  31. DB.Create(&newAdmin)
  32. }
  33. panicHelper(DB.AutoMigrate(&ConfigItem{}))
  34. var count int64
  35. DB.Model(&ConfigItem{}).Count(&count)
  36. if count == 0 {
  37. panicHelper(initConfigItem())
  38. }
  39. }
  40. func SetupGorm(m bool) {
  41. slog.Info("setup gorm")
  42. dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai",
  43. common.PostgresConfig.Ip,
  44. common.PostgresConfig.Username,
  45. common.PostgresConfig.Password,
  46. common.PostgresConfig.Name,
  47. common.PostgresConfig.Port,
  48. )
  49. if common.LoggerConfig.LogLevel == "debug" {
  50. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
  51. Logger: logger.NewGormLogger(logger.WithGroup("gorm")),
  52. })
  53. } else {
  54. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
  55. }
  56. if err != nil {
  57. panic(err)
  58. }
  59. if m {
  60. migrate()
  61. }
  62. slog.Info("setup gorm ok")
  63. }