mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update item queries
This commit is contained in:
parent
d7edd499d2
commit
f378a2c789
@ -114,7 +114,7 @@ namespace MediaBrowser.Api
|
|||||||
config.EnableStandaloneMusicKeys = true;
|
config.EnableStandaloneMusicKeys = true;
|
||||||
config.EnableCaseSensitiveItemIds = true;
|
config.EnableCaseSensitiveItemIds = true;
|
||||||
config.EnableFolderView = true;
|
config.EnableFolderView = true;
|
||||||
config.SchemaVersion = 89;
|
config.SchemaVersion = 91;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Post(UpdateStartupConfiguration request)
|
public void Post(UpdateStartupConfiguration request)
|
||||||
|
@ -53,6 +53,8 @@ namespace MediaBrowser.Controller.Channels
|
|||||||
|
|
||||||
public bool IsInfiniteStream { get; set; }
|
public bool IsInfiniteStream { get; set; }
|
||||||
|
|
||||||
|
public string HomePageUrl { get; set; }
|
||||||
|
|
||||||
public ChannelItemInfo()
|
public ChannelItemInfo()
|
||||||
{
|
{
|
||||||
MediaSources = new List<ChannelMediaInfo>();
|
MediaSources = new List<ChannelMediaInfo>();
|
||||||
|
@ -71,6 +71,9 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
public List<ItemImageInfo> ImageInfos { get; set; }
|
public List<ItemImageInfo> ImageInfos { get; set; }
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
public bool IsVirtualItem { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the album.
|
/// Gets or sets the album.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -117,6 +117,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
public bool? IsCurrentSchema { get; set; }
|
public bool? IsCurrentSchema { get; set; }
|
||||||
public bool? HasDeadParentId { get; set; }
|
public bool? HasDeadParentId { get; set; }
|
||||||
public bool? IsOffline { get; set; }
|
public bool? IsOffline { get; set; }
|
||||||
|
public bool? IsVirtualItem { get; set; }
|
||||||
|
|
||||||
public Guid? ParentId { get; set; }
|
public Guid? ParentId { get; set; }
|
||||||
public string[] AncestorIds { get; set; }
|
public string[] AncestorIds { get; set; }
|
||||||
|
@ -128,39 +128,16 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||||||
return IndexNumber != null ? IndexNumber.Value.ToString("0000") : Name;
|
return IndexNumber != null ? IndexNumber.Value.ToString("0000") : Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool RequiresRefresh()
|
|
||||||
{
|
|
||||||
var result = base.RequiresRefresh();
|
|
||||||
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
if (!IsVirtualItem.HasValue)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
|
||||||
public bool? IsVirtualItem { get; set; }
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public bool IsMissingSeason
|
public bool IsMissingSeason
|
||||||
{
|
{
|
||||||
get { return (IsVirtualItem ?? DetectIsVirtualItem()) && !IsUnaired; }
|
get { return (IsVirtualItem) && !IsUnaired; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public bool IsVirtualUnaired
|
public bool IsVirtualUnaired
|
||||||
{
|
{
|
||||||
get { return (IsVirtualItem ?? DetectIsVirtualItem()) && IsUnaired; }
|
get { return (IsVirtualItem) && IsUnaired; }
|
||||||
}
|
|
||||||
|
|
||||||
private bool DetectIsVirtualItem()
|
|
||||||
{
|
|
||||||
return LocationType == LocationType.Virtual && GetEpisodes().All(i => i.LocationType == LocationType.Virtual);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
|
@ -92,10 +92,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return GetRecursiveChildren(i => i is Episode)
|
return DateLastMediaAdded ?? DateTime.MinValue;
|
||||||
.Select(i => i.DateCreated)
|
|
||||||
.OrderByDescending(i => i)
|
|
||||||
.FirstOrDefault();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,6 +237,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||||||
AncestorWithPresentationUniqueKey = PresentationUniqueKey,
|
AncestorWithPresentationUniqueKey = PresentationUniqueKey,
|
||||||
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
|
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
|
||||||
SortBy = new[] { ItemSortBy.SortName }
|
SortBy = new[] { ItemSortBy.SortName }
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
var allSeriesEpisodes = allItems.OfType<Episode>().ToList();
|
var allSeriesEpisodes = allItems.OfType<Episode>().ToList();
|
||||||
|
@ -428,7 +428,8 @@ namespace MediaBrowser.Providers.TV
|
|||||||
Name = name,
|
Name = name,
|
||||||
IndexNumber = episodeNumber,
|
IndexNumber = episodeNumber,
|
||||||
ParentIndexNumber = seasonNumber,
|
ParentIndexNumber = seasonNumber,
|
||||||
Id = _libraryManager.GetNewItemId((series.Id + seasonNumber.ToString(_usCulture) + name), typeof(Episode))
|
Id = _libraryManager.GetNewItemId((series.Id + seasonNumber.ToString(_usCulture) + name), typeof(Episode)),
|
||||||
|
IsVirtualItem = true
|
||||||
};
|
};
|
||||||
|
|
||||||
episode.SetParent(season);
|
episode.SetParent(season);
|
||||||
|
@ -1307,6 +1307,7 @@ namespace MediaBrowser.Server.Implementations.Channels
|
|||||||
item.OfficialRating = info.OfficialRating;
|
item.OfficialRating = info.OfficialRating;
|
||||||
item.DateCreated = info.DateCreated ?? DateTime.UtcNow;
|
item.DateCreated = info.DateCreated ?? DateTime.UtcNow;
|
||||||
item.Tags = info.Tags;
|
item.Tags = info.Tags;
|
||||||
|
item.HomePageUrl = info.HomePageUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
var trailer = item as Trailer;
|
var trailer = item as Trailer;
|
||||||
|
@ -202,23 +202,7 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
var user = _userManager.GetUserById(request.UserId);
|
var user = _userManager.GetUserById(request.UserId);
|
||||||
|
|
||||||
var includeTypes = request.IncludeItemTypes;
|
var libraryItems = GetItemsForLatestItems(user, request);
|
||||||
|
|
||||||
var currentUser = user;
|
|
||||||
|
|
||||||
var libraryItems = GetItemsForLatestItems(user, request.ParentId, includeTypes, request.Limit ?? 10).Where(i =>
|
|
||||||
{
|
|
||||||
if (request.IsPlayed.HasValue)
|
|
||||||
{
|
|
||||||
var val = request.IsPlayed.Value;
|
|
||||||
if (i is Video && i.IsPlayed(currentUser) != val)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
var list = new List<Tuple<BaseItem, List<BaseItem>>>();
|
var list = new List<Tuple<BaseItem, List<BaseItem>>>();
|
||||||
|
|
||||||
@ -254,8 +238,13 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<BaseItem> GetItemsForLatestItems(User user, string parentId, string[] includeItemTypes, int limit)
|
private IEnumerable<BaseItem> GetItemsForLatestItems(User user, LatestItemsQuery request)
|
||||||
{
|
{
|
||||||
|
var parentId = request.ParentId;
|
||||||
|
|
||||||
|
var includeItemTypes = request.IncludeItemTypes;
|
||||||
|
var limit = request.Limit ?? 10;
|
||||||
|
|
||||||
var parentIds = string.IsNullOrEmpty(parentId)
|
var parentIds = string.IsNullOrEmpty(parentId)
|
||||||
? new string[] { }
|
? new string[] { }
|
||||||
: new[] { parentId };
|
: new[] { parentId };
|
||||||
@ -276,7 +265,12 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||||||
|
|
||||||
var excludeItemTypes = includeItemTypes.Length == 0 ? new[]
|
var excludeItemTypes = includeItemTypes.Length == 0 ? new[]
|
||||||
{
|
{
|
||||||
typeof(Person).Name, typeof(Studio).Name, typeof(Year).Name, typeof(GameGenre).Name, typeof(MusicGenre).Name, typeof(Genre).Name
|
typeof(Person).Name,
|
||||||
|
typeof(Studio).Name,
|
||||||
|
typeof(Year).Name,
|
||||||
|
typeof(GameGenre).Name,
|
||||||
|
typeof(MusicGenre).Name,
|
||||||
|
typeof(Genre).Name
|
||||||
|
|
||||||
} : new string[] { };
|
} : new string[] { };
|
||||||
|
|
||||||
@ -288,8 +282,9 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||||||
IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
|
IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
|
||||||
ExcludeItemTypes = excludeItemTypes,
|
ExcludeItemTypes = excludeItemTypes,
|
||||||
ExcludeLocationTypes = new[] { LocationType.Virtual },
|
ExcludeLocationTypes = new[] { LocationType.Virtual },
|
||||||
Limit = limit * 20,
|
Limit = limit * 5,
|
||||||
ExcludeSourceTypes = parentIds.Length == 0 ? new[] { SourceType.Channel, SourceType.LiveTV } : new SourceType[] { }
|
ExcludeSourceTypes = parentIds.Length == 0 ? new[] { SourceType.Channel, SourceType.LiveTV } : new SourceType[] { },
|
||||||
|
IsPlayed = request.IsPlayed
|
||||||
|
|
||||||
}, parentIds);
|
}, parentIds);
|
||||||
}
|
}
|
||||||
|
@ -952,7 +952,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|||||||
|
|
||||||
if (query.Limit.HasValue)
|
if (query.Limit.HasValue)
|
||||||
{
|
{
|
||||||
internalQuery.Limit = Math.Max(query.Limit.Value * 5, 200);
|
internalQuery.Limit = Math.Max(query.Limit.Value * 4, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query.HasAired.HasValue)
|
if (query.HasAired.HasValue)
|
||||||
|
@ -58,7 +58,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
|
|
||||||
private readonly string _criticReviewsPath;
|
private readonly string _criticReviewsPath;
|
||||||
|
|
||||||
public const int LatestSchemaVersion = 89;
|
public const int LatestSchemaVersion = 91;
|
||||||
|
|
||||||
|
private IDbConnection _connection;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
||||||
@ -90,7 +92,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
|
|
||||||
//connection.RunQueries(new[]
|
//connection.RunQueries(new[]
|
||||||
//{
|
//{
|
||||||
// "pragma locking_mode=EXCLUSIVE"
|
// "pragma locking_mode=NORMAL"
|
||||||
|
|
||||||
//}, Logger);
|
//}, Logger);
|
||||||
|
|
||||||
@ -105,6 +107,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
public async Task Initialize(IDbConnector dbConnector)
|
public async Task Initialize(IDbConnector dbConnector)
|
||||||
{
|
{
|
||||||
|
//_connection = await CreateConnection().ConfigureAwait(false);
|
||||||
|
|
||||||
using (var connection = await CreateConnection().ConfigureAwait(false))
|
using (var connection = await CreateConnection().ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
var createMediaStreamsTableCommand
|
var createMediaStreamsTableCommand
|
||||||
@ -115,7 +119,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
"create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID, Path TEXT)",
|
"create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID, Path TEXT)",
|
||||||
"create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)",
|
"create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)",
|
||||||
"create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)",
|
"create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)",
|
||||||
"create index if not exists idx_TypedBaseItems2 on TypedBaseItems(Type,Guid)",
|
|
||||||
|
|
||||||
"create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))",
|
"create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))",
|
||||||
"create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)",
|
"create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)",
|
||||||
@ -234,9 +237,14 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
string[] postQueries =
|
string[] postQueries =
|
||||||
{
|
{
|
||||||
"create index if not exists idx_PresentationUniqueKey on TypedBaseItems(PresentationUniqueKey)",
|
"create index if not exists idx_PresentationUniqueKey on TypedBaseItems(PresentationUniqueKey)",
|
||||||
|
"create index if not exists idx_GuidType on TypedBaseItems(Guid,Type)",
|
||||||
"create index if not exists idx_Type on TypedBaseItems(Type)",
|
"create index if not exists idx_Type on TypedBaseItems(Type)",
|
||||||
"create index if not exists idx_TopParentId on TypedBaseItems(TopParentId)",
|
"create index if not exists idx_TopParentId on TypedBaseItems(TopParentId)",
|
||||||
"create index if not exists idx_TypeTopParentId on TypedBaseItems(Type,TopParentId)"
|
"create index if not exists idx_TypeTopParentId on TypedBaseItems(Type,TopParentId)",
|
||||||
|
"create index if not exists idx_TypeTopParentId2 on TypedBaseItems(TopParentId,MediaType,IsVirtualItem)",
|
||||||
|
"create index if not exists idx_TypeTopParentId3 on TypedBaseItems(TopParentId,IsFolder,IsVirtualItem)",
|
||||||
|
"create index if not exists idx_TypeTopParentId4 on TypedBaseItems(TopParentId,Type,IsVirtualItem)",
|
||||||
|
"create index if not exists idx_TypeTopParentId5 on TypedBaseItems(TopParentId,IsVirtualItem)"
|
||||||
};
|
};
|
||||||
|
|
||||||
connection.RunQueries(postQueries, Logger);
|
connection.RunQueries(postQueries, Logger);
|
||||||
@ -727,15 +735,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
|
|
||||||
saveItemCommand.GetParameter(index++).Value = item.Album;
|
saveItemCommand.GetParameter(index++).Value = item.Album;
|
||||||
|
|
||||||
var season = item as Season;
|
saveItemCommand.GetParameter(index++).Value = item.IsVirtualItem || (!item.IsFolder && item.LocationType == LocationType.Virtual);
|
||||||
if (season != null && season.IsVirtualItem.HasValue)
|
|
||||||
{
|
|
||||||
saveItemCommand.GetParameter(index++).Value = season.IsVirtualItem.Value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
saveItemCommand.GetParameter(index++).Value = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasSeries = item as IHasSeries;
|
var hasSeries = item as IHasSeries;
|
||||||
if (hasSeries != null)
|
if (hasSeries != null)
|
||||||
@ -1167,10 +1167,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
item.CriticRatingSummary = reader.GetString(57);
|
item.CriticRatingSummary = reader.GetString(57);
|
||||||
}
|
}
|
||||||
|
|
||||||
var season = item as Season;
|
if (!reader.IsDBNull(58))
|
||||||
if (season != null && !reader.IsDBNull(58))
|
|
||||||
{
|
{
|
||||||
season.IsVirtualItem = reader.GetBoolean(58);
|
item.IsVirtualItem = reader.GetBoolean(58);
|
||||||
}
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
@ -1651,7 +1650,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
var slowThreshold = 1000;
|
var slowThreshold = 1000;
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
slowThreshold = 100;
|
slowThreshold = 30;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (elapsed >= slowThreshold)
|
if (elapsed >= slowThreshold)
|
||||||
@ -2196,18 +2195,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
cmd.Parameters.Add(cmd, "@IsFolder", DbType.Boolean).Value = query.IsFolder;
|
cmd.Parameters.Add(cmd, "@IsFolder", DbType.Boolean).Value = query.IsFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
|
||||||
if (includeTypes.Length == 1)
|
|
||||||
{
|
|
||||||
whereClauses.Add("type=@type");
|
|
||||||
cmd.Parameters.Add(cmd, "@type", DbType.String).Value = includeTypes[0];
|
|
||||||
}
|
|
||||||
else if (includeTypes.Length > 1)
|
|
||||||
{
|
|
||||||
var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray());
|
|
||||||
whereClauses.Add(string.Format("type in ({0})", inClause));
|
|
||||||
}
|
|
||||||
|
|
||||||
var excludeTypes = query.ExcludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
var excludeTypes = query.ExcludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
||||||
if (excludeTypes.Length == 1)
|
if (excludeTypes.Length == 1)
|
||||||
{
|
{
|
||||||
@ -2220,6 +2207,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
whereClauses.Add(string.Format("type not in ({0})", inClause));
|
whereClauses.Add(string.Format("type not in ({0})", inClause));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
||||||
|
if (includeTypes.Length == 1)
|
||||||
|
{
|
||||||
|
whereClauses.Add("type=@type");
|
||||||
|
cmd.Parameters.Add(cmd, "@type", DbType.String).Value = includeTypes[0];
|
||||||
|
}
|
||||||
|
else if (includeTypes.Length > 1)
|
||||||
|
{
|
||||||
|
var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray());
|
||||||
|
whereClauses.Add(string.Format("type in ({0})", inClause));
|
||||||
|
}
|
||||||
|
|
||||||
if (query.ChannelIds.Length == 1)
|
if (query.ChannelIds.Length == 1)
|
||||||
{
|
{
|
||||||
whereClauses.Add("ChannelId=@ChannelId");
|
whereClauses.Add("ChannelId=@ChannelId");
|
||||||
@ -2634,10 +2633,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (query.LocationTypes.Length == 1)
|
if (query.LocationTypes.Length == 1)
|
||||||
|
{
|
||||||
|
if (query.LocationTypes[0] == LocationType.Virtual && _config.Configuration.SchemaVersion >= 90)
|
||||||
|
{
|
||||||
|
query.IsVirtualItem = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
whereClauses.Add("LocationType=@LocationType");
|
whereClauses.Add("LocationType=@LocationType");
|
||||||
cmd.Parameters.Add(cmd, "@LocationType", DbType.String).Value = query.LocationTypes[0].ToString();
|
cmd.Parameters.Add(cmd, "@LocationType", DbType.String).Value = query.LocationTypes[0].ToString();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (query.LocationTypes.Length > 1)
|
else if (query.LocationTypes.Length > 1)
|
||||||
{
|
{
|
||||||
var val = string.Join(",", query.LocationTypes.Select(i => "'" + i + "'").ToArray());
|
var val = string.Join(",", query.LocationTypes.Select(i => "'" + i + "'").ToArray());
|
||||||
@ -2645,16 +2651,28 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|||||||
whereClauses.Add("LocationType in (" + val + ")");
|
whereClauses.Add("LocationType in (" + val + ")");
|
||||||
}
|
}
|
||||||
if (query.ExcludeLocationTypes.Length == 1)
|
if (query.ExcludeLocationTypes.Length == 1)
|
||||||
|
{
|
||||||
|
if (query.ExcludeLocationTypes[0] == LocationType.Virtual && _config.Configuration.SchemaVersion >= 90)
|
||||||
|
{
|
||||||
|
query.IsVirtualItem = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
whereClauses.Add("LocationType<>@ExcludeLocationTypes");
|
whereClauses.Add("LocationType<>@ExcludeLocationTypes");
|
||||||
cmd.Parameters.Add(cmd, "@ExcludeLocationTypes", DbType.String).Value = query.ExcludeLocationTypes[0].ToString();
|
cmd.Parameters.Add(cmd, "@ExcludeLocationTypes", DbType.String).Value = query.ExcludeLocationTypes[0].ToString();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (query.ExcludeLocationTypes.Length > 1)
|
else if (query.ExcludeLocationTypes.Length > 1)
|
||||||
{
|
{
|
||||||
var val = string.Join(",", query.ExcludeLocationTypes.Select(i => "'" + i + "'").ToArray());
|
var val = string.Join(",", query.ExcludeLocationTypes.Select(i => "'" + i + "'").ToArray());
|
||||||
|
|
||||||
whereClauses.Add("LocationType not in (" + val + ")");
|
whereClauses.Add("LocationType not in (" + val + ")");
|
||||||
}
|
}
|
||||||
|
if (query.IsVirtualItem.HasValue)
|
||||||
|
{
|
||||||
|
whereClauses.Add("IsVirtualItem=@IsVirtualItem");
|
||||||
|
cmd.Parameters.Add(cmd, "@IsVirtualItem", DbType.Boolean).Value = query.IsVirtualItem.Value;
|
||||||
|
}
|
||||||
if (query.MediaTypes.Length == 1)
|
if (query.MediaTypes.Length == 1)
|
||||||
{
|
{
|
||||||
whereClauses.Add("MediaType=@MediaTypes");
|
whereClauses.Add("MediaType=@MediaTypes");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user