forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview/models: move db.Timeline* into models

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li ebbe9274 3c8a87ca

verified
Changed files
+35 -34
appview
db
models
pages
+11 -32
appview/db/timeline.go
··· 2 2 3 3 import ( 4 4 "sort" 5 - "time" 6 5 7 6 "github.com/bluesky-social/indigo/atproto/syntax" 8 7 "tangled.org/core/appview/models" 9 8 ) 10 9 11 - type TimelineEvent struct { 12 - *models.Repo 13 - *models.Follow 14 - *models.Star 15 - 16 - EventAt time.Time 17 - 18 - // optional: populate only if Repo is a fork 19 - Source *models.Repo 20 - 21 - // optional: populate only if event is Follow 22 - *models.Profile 23 - *models.FollowStats 24 - *models.FollowStatus 25 - 26 - // optional: populate only if event is Repo 27 - IsStarred bool 28 - StarCount int64 29 - } 30 - 31 10 // TODO: this gathers heterogenous events from different sources and aggregates 32 11 // them in code; if we did this entirely in sql, we could order and limit and paginate easily 33 - func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { 34 - var events []TimelineEvent 12 + func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { 13 + var events []models.TimelineEvent 35 14 36 15 repos, err := getTimelineRepos(e, limit, loggedInUserDid) 37 16 if err != nil { ··· 91 70 return isStarred, starCount 92 71 } 93 72 94 - func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { 73 + func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { 95 74 repos, err := GetRepos(e, limit) 96 75 if err != nil { 97 76 return nil, err ··· 123 102 return nil, err 124 103 } 125 104 126 - var events []TimelineEvent 105 + var events []models.TimelineEvent 127 106 for _, r := range repos { 128 107 var source *models.Repo 129 108 if r.Source != "" { ··· 134 113 135 114 isStarred, starCount := getRepoStarInfo(&r, starStatuses) 136 115 137 - events = append(events, TimelineEvent{ 116 + events = append(events, models.TimelineEvent{ 138 117 Repo: &r, 139 118 EventAt: r.Created, 140 119 Source: source, ··· 146 125 return events, nil 147 126 } 148 127 149 - func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { 128 + func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { 150 129 stars, err := GetStars(e, limit) 151 130 if err != nil { 152 131 return nil, err ··· 172 151 return nil, err 173 152 } 174 153 175 - var events []TimelineEvent 154 + var events []models.TimelineEvent 176 155 for _, s := range stars { 177 156 isStarred, starCount := getRepoStarInfo(s.Repo, starStatuses) 178 157 179 - events = append(events, TimelineEvent{ 158 + events = append(events, models.TimelineEvent{ 180 159 Star: &s, 181 160 EventAt: s.Created, 182 161 IsStarred: isStarred, ··· 187 166 return events, nil 188 167 } 189 168 190 - func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { 169 + func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) { 191 170 follows, err := GetFollows(e, limit) 192 171 if err != nil { 193 172 return nil, err ··· 220 199 } 221 200 } 222 201 223 - var events []TimelineEvent 202 + var events []models.TimelineEvent 224 203 for _, f := range follows { 225 204 profile, _ := profiles[f.SubjectDid] 226 205 followStatMap, _ := followStatMap[f.SubjectDid] ··· 230 209 followStatus = followStatuses[f.SubjectDid] 231 210 } 232 211 233 - events = append(events, TimelineEvent{ 212 + events = append(events, models.TimelineEvent{ 234 213 Follow: &f, 235 214 Profile: profile, 236 215 FollowStats: &followStatMap,
+23
appview/models/timeline.go
··· 1 + package models 2 + 3 + import "time" 4 + 5 + type TimelineEvent struct { 6 + *Repo 7 + *Follow 8 + *Star 9 + 10 + EventAt time.Time 11 + 12 + // optional: populate only if Repo is a fork 13 + Source *Repo 14 + 15 + // optional: populate only if event is Follow 16 + *Profile 17 + *FollowStats 18 + *FollowStatus 19 + 20 + // optional: populate only if event is Repo 21 + IsStarred bool 22 + StarCount int64 23 + }
+1 -2
appview/pages/pages.go
··· 19 19 "tangled.org/core/api/tangled" 20 20 "tangled.org/core/appview/commitverify" 21 21 "tangled.org/core/appview/config" 22 - "tangled.org/core/appview/db" 23 22 "tangled.org/core/appview/models" 24 23 "tangled.org/core/appview/oauth" 25 24 "tangled.org/core/appview/pages/markup" ··· 283 282 284 283 type TimelineParams struct { 285 284 LoggedInUser *oauth.User 286 - Timeline []db.TimelineEvent 285 + Timeline []models.TimelineEvent 287 286 Repos []models.Repo 288 287 } 289 288