48 lines
750 B
1
package db
2
3
import (
4
"sort"
5
"time"
6
)
7
8
type TimelineEvent struct {
9
*Repo
10
*Follow
11
EventAt time.Time
12
}
13
14
func (d *DB) MakeTimeline() ([]TimelineEvent, error) {
15
var events []TimelineEvent
16
17
repos, err := d.GetAllRepos()
18
if err != nil {
19
return nil, err
20
}
21
22
follows, err := d.GetAllFollows()
23
if err != nil {
24
return nil, err
25
}
26
27
for _, repo := range repos {
28
events = append(events, TimelineEvent{
29
Repo: &repo,
30
Follow: nil,
31
EventAt: repo.Created,
32
})
33
}
34
35
for _, follow := range follows {
36
events = append(events, TimelineEvent{
37
Repo: nil,
38
Follow: &follow,
39
EventAt: follow.FollowedAt,
40
})
41
}
42
43
sort.Slice(events, func(i, j int) bool {
44
return events[i].EventAt.After(events[j].EventAt)
45
})
46
47
return events, nil
48
}
49