environment.go 2.1 KB

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