package handler import ( "spider/internal/model" "github.com/gin-gonic/gin" "gorm.io/gorm" ) // NavSiteHandler handles nav site queries. type NavSiteHandler struct { db *gorm.DB } // List returns nav sites with optional status filter and pagination. // GET /nav-sites?status=&page=&page_size= func (h *NavSiteHandler) List(c *gin.Context) { page, pageSize, offset := parsePage(c) query := h.db.Model(&model.NavSite{}) if status := c.Query("status"); status != "" { query = query.Where("status = ?", status) } var total int64 if err := query.Count(&total).Error; err != nil { Fail(c, 500, err.Error()) return } var items []model.NavSite if err := query.Order("id DESC").Limit(pageSize).Offset(offset).Find(&items).Error; err != nil { Fail(c, 500, err.Error()) return } PageOK(c, items, total, page, pageSize) }