mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
Add tagged resources page.
This commit is contained in:
@@ -99,6 +99,34 @@ func handleListResources(c fiber.Ctx) error {
|
||||
})
|
||||
}
|
||||
|
||||
func handleListResourcesWithTag(c fiber.Ctx) error {
|
||||
tag := c.Params("tag")
|
||||
if tag == "" {
|
||||
return model.NewRequestError("Tag is required")
|
||||
}
|
||||
pageStr := c.Query("page")
|
||||
if pageStr == "" {
|
||||
pageStr = "1"
|
||||
}
|
||||
page, err := strconv.Atoi(pageStr)
|
||||
if err != nil {
|
||||
return model.NewRequestError("Invalid page number")
|
||||
}
|
||||
resources, totalPages, err := service.GetResourcesWithTag(tag, page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resources == nil {
|
||||
resources = []model.ResourceView{}
|
||||
}
|
||||
return c.Status(fiber.StatusOK).JSON(model.PageResponse[model.ResourceView]{
|
||||
Success: true,
|
||||
Data: resources,
|
||||
TotalPages: totalPages,
|
||||
Message: "Resources retrieved successfully",
|
||||
})
|
||||
}
|
||||
|
||||
func handleSearchResources(c fiber.Ctx) error {
|
||||
query := c.Query("keyword")
|
||||
if query == "" {
|
||||
@@ -135,5 +163,6 @@ func AddResourceRoutes(api fiber.Router) {
|
||||
resource.Get("/", handleListResources)
|
||||
resource.Get("/:id", handleGetResource)
|
||||
resource.Delete("/:id", handleDeleteResource)
|
||||
resource.Get("/tag/:tag", handleListResourcesWithTag)
|
||||
}
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ func GetResourceList(page, pageSize int) ([]model.Resource, int, error) {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
totalPages := int(total) / pageSize
|
||||
totalPages := (total + int64(pageSize) - 1) / int64(pageSize)
|
||||
|
||||
return resources, int(totalPages), nil
|
||||
}
|
||||
@@ -110,7 +110,7 @@ func Search(query string, page, pageSize int) ([]model.Resource, int, error) {
|
||||
if endIndex > len(resource) {
|
||||
endIndex = len(resource)
|
||||
}
|
||||
totalPages := len(resource) / pageSize
|
||||
totalPages := (len(resource) + pageSize - 1) / pageSize
|
||||
|
||||
result := make([]model.Resource, 0, endIndex-startIndex)
|
||||
for i := startIndex; i < endIndex; i++ {
|
||||
@@ -157,13 +157,13 @@ func GetResourceByTag(tagID uint, page int, pageSize int) ([]model.Resource, int
|
||||
|
||||
total = db.Model(&model.Tag{}).Where("id = ?", tagID).Association("Resources").Count()
|
||||
|
||||
if err := db.Model(&model.Tag{}).Where("id = ?", tagID).Preload("User").Preload("Resources", func(tx *gorm.DB) *gorm.DB {
|
||||
return tx.Offset((page - 1) * pageSize).Limit(pageSize)
|
||||
if err := db.Model(&model.Tag{}).Where("id = ?", tagID).Preload("Resources", func(tx *gorm.DB) *gorm.DB {
|
||||
return tx.Offset((page - 1) * pageSize).Limit(pageSize).Preload("Tags").Preload("User").Preload("Images").Order("created_at DESC")
|
||||
}).First(&tag).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
totalPages := int(total) / pageSize
|
||||
totalPages := (int(total) + pageSize - 1) / pageSize
|
||||
|
||||
return tag.Resources, totalPages, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user