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