list.go 999 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package sites
  2. import (
  3. "net/http"
  4. "github.com/0xJacky/Nginx-UI/internal/site"
  5. "github.com/0xJacky/Nginx-UI/query"
  6. "github.com/gin-gonic/gin"
  7. "github.com/spf13/cast"
  8. "github.com/uozi-tech/cosy"
  9. )
  10. func GetSiteList(c *gin.Context) {
  11. // Parse query parameters
  12. options := &site.ListOptions{
  13. Search: c.Query("search"),
  14. Name: c.Query("name"),
  15. Status: c.Query("status"),
  16. OrderBy: c.Query("sort_by"),
  17. Sort: c.DefaultQuery("order", "desc"),
  18. EnvGroupID: cast.ToUint64(c.Query("env_group_id")),
  19. }
  20. // Get sites from database
  21. s := query.Site
  22. sTx := s.Preload(s.EnvGroup)
  23. if options.EnvGroupID != 0 {
  24. sTx = sTx.Where(s.EnvGroupID.Eq(options.EnvGroupID))
  25. }
  26. sites, err := sTx.Find()
  27. if err != nil {
  28. cosy.ErrHandler(c, err)
  29. return
  30. }
  31. // Get site configurations using the internal logic
  32. configs, err := site.GetSiteConfigs(c, options, sites)
  33. if err != nil {
  34. cosy.ErrHandler(c, err)
  35. return
  36. }
  37. c.JSON(http.StatusOK, gin.H{
  38. "data": configs,
  39. })
  40. }