setup.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package v1
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/allanpk716/ChineseSubFinder/internal/dao"
  6. "github.com/allanpk716/ChineseSubFinder/internal/types/backend"
  7. "github.com/gin-gonic/gin"
  8. "net/http"
  9. )
  10. func (cb ControllerBase) SetupHandler(c *gin.Context) {
  11. var err error
  12. defer func() {
  13. // 统一的异常处理
  14. cb.ErrorProcess(c, "SetupHandler", err)
  15. }()
  16. setupInfo := backend.ReqSetupInfo{}
  17. err = c.ShouldBindJSON(&setupInfo)
  18. if err != nil {
  19. return
  20. }
  21. // 只有当用户不存在的时候才能够执行初始化操作
  22. found, _, err := dao.GetUserInfo()
  23. if err != nil {
  24. return
  25. }
  26. if found == true {
  27. // 存在则反馈无需初始化
  28. c.JSON(http.StatusNoContent, backend.ReplyCommon{Message: "already setup"})
  29. return
  30. } else {
  31. // 需要创建用户,因为上述判断了没有用户存在,所以就默认直接新建了
  32. re := dao.GetDb().Create(&setupInfo.UserInfo)
  33. if re == nil {
  34. err = errors.New(fmt.Sprintf("dao.GetDb().Create return nil"))
  35. return
  36. }
  37. if re.Error != nil {
  38. err = re.Error
  39. return
  40. }
  41. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "ok"})
  42. return
  43. }
  44. }