Avoid calling FilterSoundTracks for every Anime as it can potentially be costly

This commit is contained in:
Youssef Habri 2020-02-11 12:43:50 +01:00
parent d0135e93ee
commit 8c5ddec450

View File

@ -19,16 +19,21 @@ func Get(ctx aero.Context) error {
return ctx.Error(http.StatusNotFound, "Track not found", err) return ctx.Error(http.StatusNotFound, "Track not found", err)
} }
relatedTracks := make([]*arn.SoundTrack, 0, 5) relatedTracks := arn.FilterSoundTracks(func(t *arn.SoundTrack) bool {
for _, anime := range track.Anime() { return !t.IsDraft && len(t.Media) > 0 && t.ID != track.ID && isRelated(track.Anime(), t)
anime := anime })
tracks := arn.FilterSoundTracks(func(t *arn.SoundTrack) bool {
return !t.IsDraft && len(t.Media) > 0 && t.ID != track.ID && arn.Contains(t.Tags, "anime:"+anime.ID)
})
relatedTracks = append(relatedTracks, tracks...)
}
customCtx := ctx.(*middleware.OpenGraphContext) customCtx := ctx.(*middleware.OpenGraphContext)
customCtx.OpenGraph = getOpenGraph(track) customCtx.OpenGraph = getOpenGraph(track)
return ctx.HTML(components.SoundTrackPage(track, relatedTracks, user)) return ctx.HTML(components.SoundTrackPage(track, relatedTracks, user))
} }
func isRelated(anime []*arn.Anime, track *arn.SoundTrack) bool {
for _, anime := range anime {
if arn.Contains(track.Tags, "anime:"+anime.ID) {
return true
}
}
return false
}