/
mongo_infocache.go
executable file
·43 lines (39 loc) · 1.84 KB
/
mongo_infocache.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package mongo
import (
"github.com/thavlik/t4vd/seer/pkg/infocache"
"go.mongodb.org/mongo-driver/mongo"
)
var (
channelRecencyCollection = "channelrecency" // tracks how recent the channel cache is
playlistRecencyCollection = "playlistrecency" // tracks how recent the playlist cache is
videoRecencyCollection = "videorecency" // tracks how recent the playlist cache is
channelJoinCollection = "channeljoins" // tracks which videos are in which channels
playlistJoinCollection = "playlistjoins" // tracks which videos are in which playlists
cachedVideosCollection = "cachedvideos" // cache of video info
cachedChannelsCollection = "cachedchannels" // cache of video info
cachedPlaylistsCollection = "cachedplaylists" // cache of video info
channelOriginKey = "c"
playlistOriginKey = "p"
)
type mongoInfoCache struct {
channelRecencyCollection *mongo.Collection
playlistRecencyCollection *mongo.Collection
videoRecencyCollection *mongo.Collection
channelJoinCollection *mongo.Collection
playlistJoinCollection *mongo.Collection
cachedVideosCollection *mongo.Collection
cachedPlaylistsCollection *mongo.Collection
cachedChannelsCollection *mongo.Collection
}
func NewMongoInfoCache(db *mongo.Database) infocache.InfoCache {
return &mongoInfoCache{
channelRecencyCollection: db.Collection(channelRecencyCollection),
playlistRecencyCollection: db.Collection(playlistRecencyCollection),
videoRecencyCollection: db.Collection(videoRecencyCollection),
channelJoinCollection: db.Collection(channelJoinCollection),
playlistJoinCollection: db.Collection(playlistJoinCollection),
cachedVideosCollection: db.Collection(cachedVideosCollection),
cachedPlaylistsCollection: db.Collection(cachedPlaylistsCollection),
cachedChannelsCollection: db.Collection(cachedChannelsCollection),
}
}