environment.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package cluster
  2. import (
  3. "github.com/0xJacky/Nginx-UI/api"
  4. "github.com/0xJacky/Nginx-UI/internal/analytic"
  5. "github.com/0xJacky/Nginx-UI/internal/cosy"
  6. "github.com/0xJacky/Nginx-UI/model"
  7. "github.com/0xJacky/Nginx-UI/query"
  8. "github.com/gin-gonic/gin"
  9. "github.com/spf13/cast"
  10. "net/http"
  11. )
  12. func GetEnvironment(c *gin.Context) {
  13. id := cast.ToInt(c.Param("id"))
  14. envQuery := query.Environment
  15. env, err := envQuery.FirstByID(id)
  16. if err != nil {
  17. api.ErrHandler(c, err)
  18. return
  19. }
  20. c.JSON(http.StatusOK, analytic.GetNode(env))
  21. }
  22. func GetEnvironmentList(c *gin.Context) {
  23. cosy.Core[model.Environment](c).
  24. SetFussy("name").
  25. SetEqual("enabled").
  26. SetTransformer(func(m *model.Environment) any {
  27. return analytic.GetNode(m)
  28. }).PagingList()
  29. }
  30. func AddEnvironment(c *gin.Context) {
  31. cosy.Core[model.Environment](c).SetValidRules(gin.H{
  32. "name": "required",
  33. "url": "required,url",
  34. "token": "required",
  35. "enabled": "omitempty,boolean",
  36. }).ExecutedHook(func(c *cosy.Ctx[model.Environment]) {
  37. go analytic.RestartRetrieveNodesStatus()
  38. }).Create()
  39. }
  40. func EditEnvironment(c *gin.Context) {
  41. cosy.Core[model.Environment](c).SetValidRules(gin.H{
  42. "name": "required",
  43. "url": "required,url",
  44. "token": "required",
  45. "enabled": "omitempty,boolean",
  46. }).ExecutedHook(func(c *cosy.Ctx[model.Environment]) {
  47. go analytic.RestartRetrieveNodesStatus()
  48. }).Modify()
  49. }
  50. func DeleteEnvironment(c *gin.Context) {
  51. id := cast.ToInt(c.Param("id"))
  52. envQuery := query.Environment
  53. env, err := envQuery.FirstByID(id)
  54. if err != nil {
  55. api.ErrHandler(c, err)
  56. return
  57. }
  58. err = envQuery.DeleteByID(env.ID)
  59. if err != nil {
  60. api.ErrHandler(c, err)
  61. return
  62. }
  63. go analytic.RestartRetrieveNodesStatus()
  64. c.JSON(http.StatusNoContent, nil)
  65. }