Fix contributing artist query (#14991)

This commit is contained in:
theguymadmax
2025-10-13 10:09:09 -05:00
committed by GitHub
parent 27c9c9c0ed
commit 794e1361d7
2 changed files with 40 additions and 2 deletions

View File

@@ -53,6 +53,33 @@ public static class JellyfinQueryHelperExtensions
return baseQuery.Where(ReferencedItemFilterExpressionBuilder(context, itemValueType, referenceIds, invert));
}
/// <summary>
/// Builds a query that checks referenced ItemValues for a cross BaseItem lookup.
/// </summary>
/// <param name="baseQuery">The source query.</param>
/// <param name="context">The database context.</param>
/// <param name="itemValueTypes">The type of item value to reference.</param>
/// <param name="referenceIds">The list of BaseItem ids to check matches.</param>
/// <param name="invert">If set an exclusion check is performed instead.</param>
/// <returns>A Query.</returns>
public static IQueryable<BaseItemEntity> WhereReferencedItemMultipleTypes(
this IQueryable<BaseItemEntity> baseQuery,
JellyfinDbContext context,
IList<ItemValueType> itemValueTypes,
IList<Guid> referenceIds,
bool invert = false)
{
var itemFilter = OneOrManyExpressionBuilder<BaseItemEntity, Guid>(referenceIds, f => f.Id);
return baseQuery.Where(item =>
context.ItemValues
.Join(context.ItemValuesMap, e => e.ItemValueId, e => e.ItemValueId, (itemVal, map) => new { itemVal, map })
.Any(val =>
itemValueTypes.Contains(val.itemVal.Type)
&& context.BaseItems.Where(itemFilter).Any(e => e.CleanName == val.itemVal.CleanValue)
&& val.map.ItemId == item.Id) == EF.Constant(!invert));
}
/// <summary>
/// Builds a query expression that checks referenced ItemValues for a cross BaseItem lookup.
/// </summary>