From ebbe9274801015a01c043528b34b80bc901fe65e Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 23 Sep 2025 10:41:47 +0000 Subject: [PATCH] appview/models: move db.Timeline* into models Signed-off-by: oppiliappan --- appview/db/timeline.go | 43 +++++++++++-------------------------------- appview/models/timeline.go | 23 +++++++++++++++++++++++ appview/pages/pages.go | 3 +-- 3 file(s) changed, 35 insertion(s)(+), 34 deletion(s)(-) diff --git a/appview/db/timeline.go b/appview/db/timeline.go --- a/appview/db/timeline.go +++ b/appview/db/timeline.go @@ -2,36 +2,15 @@ package db import ( "sort" - "time" "github.com/bluesky-social/indigo/atproto/syntax" "tangled.org/core/appview/models" ) -type TimelineEvent struct { - *models.Repo - *models.Follow - *models.Star - - EventAt time.Time - - // optional: populate only if Repo is a fork - Source *models.Repo - - // optional: populate only if event is Follow - *models.Profile - *models.FollowStats - *models.FollowStatus - - // optional: populate only if event is Repo - IsStarred bool - StarCount int64 -} - // TODO: this gathers heterogenous events from different sources and aggregates // them in code; if we did this entirely in sql, we could order and limit and paginate easily -func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { - var events []TimelineEvent +func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { + var events []models.TimelineEvent repos, err := getTimelineRepos(e, limit, loggedInUserDid) if err != nil { @@ -91,7 +70,7 @@ return isStarred, starCount } -func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { +func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { repos, err := GetRepos(e, limit) if err != nil { return nil, err @@ -123,7 +102,7 @@ if err != nil { return nil, err } - var events []TimelineEvent + var events []models.TimelineEvent for _, r := range repos { var source *models.Repo if r.Source != "" { @@ -134,7 +113,7 @@ } isStarred, starCount := getRepoStarInfo(&r, starStatuses) - events = append(events, TimelineEvent{ + events = append(events, models.TimelineEvent{ Repo: &r, EventAt: r.Created, Source: source, @@ -146,7 +125,7 @@ return events, nil } -func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { +func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { stars, err := GetStars(e, limit) if err != nil { return nil, err @@ -172,11 +151,11 @@ if err != nil { return nil, err } - var events []TimelineEvent + var events []models.TimelineEvent for _, s := range stars { isStarred, starCount := getRepoStarInfo(s.Repo, starStatuses) - events = append(events, TimelineEvent{ + events = append(events, models.TimelineEvent{ Star: &s, EventAt: s.Created, IsStarred: isStarred, @@ -187,7 +166,7 @@ return events, nil } -func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { +func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { follows, err := GetFollows(e, limit) if err != nil { return nil, err @@ -220,7 +199,7 @@ return nil, err } } - var events []TimelineEvent + var events []models.TimelineEvent for _, f := range follows { profile, _ := profiles[f.SubjectDid] followStatMap, _ := followStatMap[f.SubjectDid] @@ -230,7 +209,7 @@ if followStatuses != nil { followStatus = followStatuses[f.SubjectDid] } - events = append(events, TimelineEvent{ + events = append(events, models.TimelineEvent{ Follow: &f, Profile: profile, FollowStats: &followStatMap, diff --git a/appview/models/timeline.go b/appview/models/timeline.go new file mode 100644 --- /dev/null +++ b/appview/models/timeline.go @@ -0,0 +1,23 @@ +package models + +import "time" + +type TimelineEvent struct { + *Repo + *Follow + *Star + + EventAt time.Time + + // optional: populate only if Repo is a fork + Source *Repo + + // optional: populate only if event is Follow + *Profile + *FollowStats + *FollowStatus + + // optional: populate only if event is Repo + IsStarred bool + StarCount int64 +} diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -19,7 +19,6 @@ "tangled.org/core/api/tangled" "tangled.org/core/appview/commitverify" "tangled.org/core/appview/config" - "tangled.org/core/appview/db" "tangled.org/core/appview/models" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages/markup" @@ -283,7 +282,7 @@ } type TimelineParams struct { LoggedInUser *oauth.User - Timeline []db.TimelineEvent + Timeline []models.TimelineEvent Repos []models.Repo } -- tangled.sh