| 1234567891011121314151617181920212223242526272829303132333435363738 |
- 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)
- }
|