41 lines
1.1 KiB
Go
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)
|
|
})
|
|
}
|