aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Persistence
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-08-19 02:23:00 -0400
committerGitHub <noreply@github.com>2016-08-19 02:23:00 -0400
commit3e8303bd4b282861c5ef44b9187090574c7a65f7 (patch)
tree34fc1552d02eccd421684b9a6d367c99704d42b4 /MediaBrowser.Server.Implementations/Persistence
parenta1a5446342ca653f57ba21a9ac291f42897c4caf (diff)
parent8f59f39873be3ee54aac1403d561031c459f4845 (diff)
Merge pull request #2077 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence')
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs39
1 files changed, 35 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 2ac625ebc7..c3eee6d354 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -3882,18 +3882,36 @@ namespace MediaBrowser.Server.Implementations.Persistence
public List<string> GetStudioNames()
{
- return GetItemValueNames(new[] { 3 });
+ return GetItemValueNames(new[] { 3 }, new List<string>(), new List<string>());
}
public List<string> GetAllArtistNames()
{
- return GetItemValueNames(new[] { 0, 1 });
+ return GetItemValueNames(new[] { 0, 1 }, new List<string>(), new List<string>());
}
- private List<string> GetItemValueNames(int[] itemValueTypes)
+ public List<string> GetMusicGenreNames()
+ {
+ return GetItemValueNames(new[] { 2 }, new List<string> { "Audio", "MusicVideo", "MusicAlbum", "MusicArtist" }, new List<string>());
+ }
+
+ public List<string> GetGameGenreNames()
+ {
+ return GetItemValueNames(new[] { 2 }, new List<string> { "Game" }, new List<string>());
+ }
+
+ public List<string> GetGenreNames()
+ {
+ return GetItemValueNames(new[] { 2 }, new List<string>(), new List<string> { "Audio", "MusicVideo", "MusicAlbum", "MusicArtist", "Game", "GameSystem" });
+ }
+
+ private List<string> GetItemValueNames(int[] itemValueTypes, List<string> withItemTypes, List<string> excludeItemTypes)
{
CheckDisposed();
+ withItemTypes = withItemTypes.SelectMany(MapIncludeItemTypes).ToList();
+ excludeItemTypes = excludeItemTypes.SelectMany(MapIncludeItemTypes).ToList();
+
var now = DateTime.UtcNow;
var typeClause = itemValueTypes.Length == 1 ?
@@ -3904,7 +3922,20 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var cmd = _connection.CreateCommand())
{
- cmd.CommandText = "Select Value From ItemValues where " + typeClause + " Group By CleanValue";
+ cmd.CommandText = "Select Value From ItemValues where " + typeClause;
+
+ if (withItemTypes.Count > 0)
+ {
+ var typeString = string.Join(",", withItemTypes.Select(i => "'" + i + "'").ToArray());
+ cmd.CommandText += " AND ItemId In (select guid from typedbaseitems where type in (" + typeString + "))";
+ }
+ if (excludeItemTypes.Count > 0)
+ {
+ var typeString = string.Join(",", excludeItemTypes.Select(i => "'" + i + "'").ToArray());
+ cmd.CommandText += " AND ItemId not In (select guid from typedbaseitems where type in (" + typeString + "))";
+ }
+
+ cmd.CommandText += " Group By CleanValue";
var commandBehavior = CommandBehavior.SequentialAccess | CommandBehavior.SingleResult;