From b46ffb1b1e51a3ce51577d2d839d3ec588a2dc8f Mon Sep 17 00:00:00 2001 From: iatsuta Date: Fri, 6 Feb 2026 14:11:20 +0100 Subject: [PATCH 1/3] move-fetch-expander --- src/Directory.Packages.props | 4 ++-- .../Fetching/FetchRuleExpanderExtensions.cs | 7 +++++++ .../Fetching/IFetchRuleExpander.cs | 0 .../Fetching/FetchRuleExpanderExtensions.cs | 1 - src/__SolutionItems/CommonAssemblyInfo.cs | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 src/GenericQueryable.Abstractions/Fetching/FetchRuleExpanderExtensions.cs rename src/{GenericQueryable.Runtime => GenericQueryable.Abstractions}/Fetching/IFetchRuleExpander.cs (100%) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index dc0bc13..4e7ea0c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -3,8 +3,8 @@ true - - + + diff --git a/src/GenericQueryable.Abstractions/Fetching/FetchRuleExpanderExtensions.cs b/src/GenericQueryable.Abstractions/Fetching/FetchRuleExpanderExtensions.cs new file mode 100644 index 0000000..38b9e78 --- /dev/null +++ b/src/GenericQueryable.Abstractions/Fetching/FetchRuleExpanderExtensions.cs @@ -0,0 +1,7 @@ +namespace GenericQueryable.Fetching; + +public static class FetchRuleExpanderExtensions +{ + public static PropertyFetchRule Expand(this IFetchRuleExpander fetchRuleExpander, FetchRule fetchRule) => + fetchRuleExpander.TryExpand(fetchRule) ?? throw new ArgumentOutOfRangeException(nameof(fetchRule)); +} \ No newline at end of file diff --git a/src/GenericQueryable.Runtime/Fetching/IFetchRuleExpander.cs b/src/GenericQueryable.Abstractions/Fetching/IFetchRuleExpander.cs similarity index 100% rename from src/GenericQueryable.Runtime/Fetching/IFetchRuleExpander.cs rename to src/GenericQueryable.Abstractions/Fetching/IFetchRuleExpander.cs diff --git a/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs b/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs index 38b9e78..1d3958e 100644 --- a/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs +++ b/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs @@ -1,7 +1,6 @@ namespace GenericQueryable.Fetching; public static class FetchRuleExpanderExtensions -{ public static PropertyFetchRule Expand(this IFetchRuleExpander fetchRuleExpander, FetchRule fetchRule) => fetchRuleExpander.TryExpand(fetchRule) ?? throw new ArgumentOutOfRangeException(nameof(fetchRule)); } \ No newline at end of file diff --git a/src/__SolutionItems/CommonAssemblyInfo.cs b/src/__SolutionItems/CommonAssemblyInfo.cs index 4fdb881..d58939a 100644 --- a/src/__SolutionItems/CommonAssemblyInfo.cs +++ b/src/__SolutionItems/CommonAssemblyInfo.cs @@ -3,7 +3,7 @@ [assembly: AssemblyProduct("GenericQueryable")] [assembly: AssemblyCompany("IvAt")] -[assembly: AssemblyVersion("2.1.13.0")] +[assembly: AssemblyVersion("2.1.14.0")] [assembly: AssemblyInformationalVersion("changes at build")] #if DEBUG From db526843d97abbcccbb34c1a707192d0dd7656db Mon Sep 17 00:00:00 2001 From: iatsuta Date: Fri, 6 Feb 2026 14:15:31 +0100 Subject: [PATCH 2/3] fix --- .../Fetching/FetchRuleExpanderExtensions.cs | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs diff --git a/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs b/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs deleted file mode 100644 index 1d3958e..0000000 --- a/src/GenericQueryable.Runtime/Fetching/FetchRuleExpanderExtensions.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace GenericQueryable.Fetching; - -public static class FetchRuleExpanderExtensions - public static PropertyFetchRule Expand(this IFetchRuleExpander fetchRuleExpander, FetchRule fetchRule) => - fetchRuleExpander.TryExpand(fetchRule) ?? throw new ArgumentOutOfRangeException(nameof(fetchRule)); -} \ No newline at end of file From cf0ef56e311b743253f9df5bdaa318ef6260568f Mon Sep 17 00:00:00 2001 From: iatsuta Date: Fri, 6 Feb 2026 14:22:07 +0100 Subject: [PATCH 3/3] upd --- src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs | 2 +- .../Fetching/FetchRuleHeaderExpander.cs | 2 +- src/GenericQueryable.Runtime/Fetching/FetchService.cs | 3 +-- src/GenericQueryable.Runtime/Fetching/RootFetchRuleExpander.cs | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs b/src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs index 9b74d8f..cf9b6fa 100644 --- a/src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs +++ b/src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs @@ -1,3 +1,3 @@ namespace GenericQueryable.Fetching; -public record UntypedFetchRule(string Path) : FetchRule; \ No newline at end of file +public sealed record UntypedFetchRule(string Path) : FetchRule; \ No newline at end of file diff --git a/src/GenericQueryable.Runtime/Fetching/FetchRuleHeaderExpander.cs b/src/GenericQueryable.Runtime/Fetching/FetchRuleHeaderExpander.cs index 3378de3..663e9e9 100644 --- a/src/GenericQueryable.Runtime/Fetching/FetchRuleHeaderExpander.cs +++ b/src/GenericQueryable.Runtime/Fetching/FetchRuleHeaderExpander.cs @@ -15,7 +15,7 @@ public class FetchRuleHeaderExpander(IEnumerable fetchRuleH { if (fetchRule is FetchRuleHeader fetchRuleHeader) { - return cache.GetOrAdd(typeof(TSource), + return cache.GetOrAdd(fetchRuleHeader.GetType(), _ => headersDict .GetValueOrDefault(typeof(TSource)) .EmptyIfNull() diff --git a/src/GenericQueryable.Runtime/Fetching/FetchService.cs b/src/GenericQueryable.Runtime/Fetching/FetchService.cs index 38d1be3..23110bd 100644 --- a/src/GenericQueryable.Runtime/Fetching/FetchService.cs +++ b/src/GenericQueryable.Runtime/Fetching/FetchService.cs @@ -11,7 +11,7 @@ namespace GenericQueryable.Fetching; public abstract class FetchService([FromKeyedServices(RootFetchRuleExpander.Key)] IFetchRuleExpander fetchRuleExpander) : IFetchService { - private readonly ConcurrentDictionary> rootCache = []; + private readonly ConcurrentDictionary rootCache = []; public virtual IQueryable ApplyFetch(IQueryable source, FetchRule fetchRule) where TSource : class => this.GetApplyFetchFunc(fetchRule).Invoke(source); @@ -20,7 +20,6 @@ private Func, IQueryable> GetApplyFetchFunc new ConcurrentDictionary()) .GetOrAdd(fetchRule.GetType(), _ => new ConcurrentDictionary, Func, IQueryable>>()) .Pipe(v => (ConcurrentDictionary, Func, IQueryable>>)v) .GetOrAdd(fetchRule, _ => diff --git a/src/GenericQueryable.Runtime/Fetching/RootFetchRuleExpander.cs b/src/GenericQueryable.Runtime/Fetching/RootFetchRuleExpander.cs index aa04970..9ad89f3 100644 --- a/src/GenericQueryable.Runtime/Fetching/RootFetchRuleExpander.cs +++ b/src/GenericQueryable.Runtime/Fetching/RootFetchRuleExpander.cs @@ -19,7 +19,7 @@ public class RootFetchRuleExpander(IEnumerable expanders) : else { return cache - .GetOrAdd(typeof(TSource), _ => new ConcurrentDictionary, PropertyFetchRule?>()) + .GetOrAdd(fetchRule.GetType(), _ => new ConcurrentDictionary, PropertyFetchRule?>()) .Pipe(innerCache => (ConcurrentDictionary, PropertyFetchRule?>)innerCache) .GetOrAdd(fetchRule, _ => {