50 lines
785 B
1
package db
2
3
import (
4
"log"
5
"sort"
6
"time"
7
)
8
9
type TimelineEvent struct {
10
*Repo
11
*Follow
12
EventAt time.Time
13
}
14
15
func (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
}
51