aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-21 12:50:50 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-21 12:50:50 -0400
commit23fe6dc4be28c4d273bb22962ac769c749931090 (patch)
tree702ba05944d430c84e679325bd4f894256e92637 /MediaBrowser.Controller
parentdfafa98da3ad6d1c2aa982cebd63bd35bba895e0 (diff)
update db querying
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs12
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs6
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs47
3 files changed, 65 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index d2fa5d9a0..fa96ba4e5 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1175,6 +1175,18 @@ namespace MediaBrowser.Controller.Entities
return true;
}
+ if (query.AlbumNames.Length > 0)
+ {
+ Logger.Debug("Query requires post-filtering due to AlbumNames");
+ return true;
+ }
+
+ if (query.ArtistNames.Length > 0)
+ {
+ Logger.Debug("Query requires post-filtering due to ArtistNames");
+ return true;
+ }
+
return false;
}
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
index e98c89abf..b568aec18 100644
--- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
+++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
@@ -128,8 +128,14 @@ namespace MediaBrowser.Controller.Entities
public SeriesStatus[] SeriesStatuses { get; set; }
public string AlbumArtistStartsWithOrGreater { get; set; }
+ public string[] AlbumNames { get; set; }
+ public string[] ArtistNames { get; set; }
+
public InternalItemsQuery()
{
+ AlbumNames = new string[] { };
+ ArtistNames = new string[] { };
+
BlockUnratedItems = new UnratedItem[] { };
Tags = new string[] { };
OfficialRatings = new string[] { };
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index ee5412d62..a74859a46 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -1768,6 +1768,53 @@ namespace MediaBrowser.Controller.Entities
}
}
+ // Artists
+ if (query.ArtistNames.Length > 0)
+ {
+ var audio = item as IHasArtist;
+
+ if (!(audio != null && query.ArtistNames.Any(audio.HasAnyArtist)))
+ {
+ return false;
+ }
+ }
+
+ // Albums
+ if (query.AlbumNames.Length > 0)
+ {
+ var audio = item as Audio.Audio;
+
+ if (audio != null)
+ {
+ if (!query.AlbumNames.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase)))
+ {
+ return false;
+ }
+ }
+
+ var album = item as MusicAlbum;
+
+ if (album != null)
+ {
+ if (!query.AlbumNames.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase)))
+ {
+ return false;
+ }
+ }
+
+ var musicVideo = item as MusicVideo;
+
+ if (musicVideo != null)
+ {
+ if (!query.AlbumNames.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase)))
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
return true;
}