Files
creator-hub/internal/controlplane/api/comment_aggregation.go
T

41 lines
1.1 KiB
Go

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