Temp Fix for Calendar Feed until Data Mapper can be fixed.

pull/6/head
Qstick 7 years ago
parent 8c68ddfeb2
commit f7f6ad159c

@ -19,12 +19,14 @@ namespace Lidarr.Api.V1.Calendar
public class CalendarFeedModule : LidarrV1FeedModule public class CalendarFeedModule : LidarrV1FeedModule
{ {
private readonly IAlbumService _albumService; private readonly IAlbumService _albumService;
private readonly IArtistService _artistService;
private readonly ITagService _tagService; private readonly ITagService _tagService;
public CalendarFeedModule(IAlbumService albumService, ITagService tagService) public CalendarFeedModule(IAlbumService albumService, IArtistService artistService, ITagService tagService)
: base("calendar") : base("calendar")
{ {
_albumService = albumService; _albumService = albumService;
_artistService = artistService;
_tagService = tagService; _tagService = tagService;
Get["/Lidarr.ics"] = options => GetCalendarFeed(); Get["/Lidarr.ics"] = options => GetCalendarFeed();
@ -37,7 +39,6 @@ namespace Lidarr.Api.V1.Calendar
var start = DateTime.Today.AddDays(-pastDays); var start = DateTime.Today.AddDays(-pastDays);
var end = DateTime.Today.AddDays(futureDays); var end = DateTime.Today.AddDays(futureDays);
var unmonitored = Request.GetBooleanQueryParameter("unmonitored"); var unmonitored = Request.GetBooleanQueryParameter("unmonitored");
var asAllDay = Request.GetBooleanQueryParameter("asAllDay");
var tags = new List<int>(); var tags = new List<int>();
var queryPastDays = Request.Query.PastDays; var queryPastDays = Request.Query.PastDays;
@ -74,7 +75,9 @@ namespace Lidarr.Api.V1.Calendar
foreach (var album in albums.OrderBy(v => v.ReleaseDate.Value)) foreach (var album in albums.OrderBy(v => v.ReleaseDate.Value))
{ {
if (tags.Any() && tags.None(album.Artist.Tags.Contains)) var artist = _artistService.GetArtist(album.ArtistId); // Temp fix TODO: Figure out why Album.Artist is not populated during AlbumsBetweenDates Query
if (tags.Any() && tags.None(artist.Tags.Contains))
{ {
continue; continue;
} }
@ -87,7 +90,7 @@ namespace Lidarr.Api.V1.Calendar
occurrence.Start = new CalDateTime(album.ReleaseDate.Value.ToLocalTime()) { HasTime = false }; occurrence.Start = new CalDateTime(album.ReleaseDate.Value.ToLocalTime()) { HasTime = false };
occurrence.Summary = $"{album.Artist.Name} - {album.Title}"; occurrence.Summary = $"{artist.Name} - {album.Title}";
} }
var serializer = (IStringSerializer)new SerializerFactory().Build(calendar.GetType(), new SerializationContext()); var serializer = (IStringSerializer)new SerializerFactory().Build(calendar.GetType(), new SerializationContext());

@ -46,6 +46,13 @@ namespace NzbDrone.Core.Test.Datastore
Db.InsertMany(artist); Db.InsertMany(artist);
var albums = Builder<Album>.CreateListOfSize(3)
.All()
.With(v => v.ArtistId = artist[0].Id)
.BuildListOfNew();
Db.InsertMany(albums);
var trackFiles = Builder<TrackFile>.CreateListOfSize(1) var trackFiles = Builder<TrackFile>.CreateListOfSize(1)
.All() .All()
.With(v => v.ArtistId = artist[0].Id) .With(v => v.ArtistId = artist[0].Id)
@ -64,6 +71,22 @@ namespace NzbDrone.Core.Test.Datastore
Db.InsertMany(tracks); Db.InsertMany(tracks);
} }
[Test]
public void should_join_artist_when_query_for_albums()
{
var db = Mocker.Resolve<IDatabase>();
var DataMapper = db.GetDataMapper();
var albums = DataMapper.Query<Album>()
.Join<Album, Artist>(Marr.Data.QGen.JoinType.Inner, v => v.Artist, (l, r) => l.ArtistId == r.Id)
.ToList();
foreach (var album in albums)
{
Assert.IsNotNull(album.Artist);
}
}
[Test] [Test]
public void should_lazy_load_profile_if_not_joined() public void should_lazy_load_profile_if_not_joined()
{ {

Loading…
Cancel
Save