feat: unify owned and competitor work analysis

This commit is contained in:
2026-10-06 14:40:32 +08:00
parent ca3cbb8d37
commit fa7b78797d
15 changed files with 851 additions and 280 deletions
+3 -3
View File
@@ -585,17 +585,17 @@ func registerCreatorWithServices(app *fiber.App, store *creator.Store, phaseASto
}
func workFilter(c fiber.Ctx) (creator.WorkFilter, error) {
filter := creator.WorkFilter{Platform: c.Query("platform"), SourceID: c.Query("source_id"), SourceType: c.Query("source_type"), PublishedAtStatus: c.Query("published_at_status")}
filter := creator.WorkFilter{Platform: c.Query("platform"), SourceID: c.Query("source_id"), SourceType: c.Query("source_type"), PublishedAtStatus: c.Query("published_at_status"), SortBy: c.Query("sort_by"), SortOrder: c.Query("sort_order")}
for _, field := range []struct {
name string
target **int64
}{{"min_likes", &filter.MinLikes}, {"min_comments", &filter.MinComments}, {"min_shares", &filter.MinShares}} {
}{{"min_likes", &filter.MinLikes}, {"min_comments", &filter.MinComments}, {"min_shares", &filter.MinShares}, {"min_collect_count", &filter.MinCollectCount}, {"min_play_count", &filter.MinPlayCount}} {
value := c.Query(field.name)
if value == "" {
continue
}
parsed, err := strconv.ParseInt(value, 10, 64)
if err != nil {
if err != nil || parsed < 0 {
return creator.WorkFilter{}, creator.ErrInvalid
}
*field.target = &parsed