package api import ( "strconv" "strings" "time" "git.ipao.vip/rogee/creator-hub/internal/creator" "github.com/gofiber/fiber/v3" ) func creatorCommentAggregationFilter(c fiber.Ctx) (creator.CommentAggregationFilter, error) { hours, err := strconv.Atoi(c.Query("hours", "24")) if err != nil { return creator.CommentAggregationFilter{}, creator.ErrInvalid } filter := creator.CommentAggregationFilter{SourceType: strings.TrimSpace(c.Query("source_type")), SourceID: strings.TrimSpace(c.Query("source_id")), Hours: hours} return filter, filter.Validate() } func registerCommentAggregation(app *fiber.App, store *creator.Store) { app.Get("/api/creator/comments/aggregation", func(c fiber.Ctx) error { filter, err := creatorCommentAggregationFilter(c) if err != nil { return creatorError(c, err) } page, pageSize, paged, err := creatorPageQuery(c) if err != nil { return creatorError(c, err) } if !paged { page, pageSize = 1, 25 } result, err := store.ListCommentAggregationPage(c.Context(), filter, page, pageSize, time.Now().UTC()) if err != nil { return creatorError(c, err) } return c.JSON(result) }) }