nav_site.go 843 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package handler
  2. import (
  3. "spider/internal/model"
  4. "github.com/gin-gonic/gin"
  5. "gorm.io/gorm"
  6. )
  7. // NavSiteHandler handles nav site queries.
  8. type NavSiteHandler struct {
  9. db *gorm.DB
  10. }
  11. // List returns nav sites with optional status filter and pagination.
  12. // GET /nav-sites?status=&page=&page_size=
  13. func (h *NavSiteHandler) List(c *gin.Context) {
  14. page, pageSize, offset := parsePage(c)
  15. query := h.db.Model(&model.NavSite{})
  16. if status := c.Query("status"); status != "" {
  17. query = query.Where("status = ?", status)
  18. }
  19. var total int64
  20. if err := query.Count(&total).Error; err != nil {
  21. Fail(c, 500, err.Error())
  22. return
  23. }
  24. var items []model.NavSite
  25. if err := query.Order("id DESC").Limit(pageSize).Offset(offset).Find(&items).Error; err != nil {
  26. Fail(c, 500, err.Error())
  27. return
  28. }
  29. PageOK(c, items, total, page, pageSize)
  30. }