added icon and readmy for nugets, added gitea pipeline, added AoT compatible for all projects that are not AspNetCore specific
This commit is contained in:
parent
c6a28f352f
commit
b7b88bc258
0
.gitea/workflows/publish-nugets.yaml
Normal file
0
.gitea/workflows/publish-nugets.yaml
Normal file
@ -1,11 +1,23 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>true</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0-rc.1.23419.4" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0-rc.1.23419.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using OpenHarbor.CQRS.Abstractions.Discovery;
|
using OpenHarbor.CQRS.Abstractions.Discovery;
|
||||||
|
|
||||||
namespace OpenHarbor.CQRS.Abstractions;
|
namespace OpenHarbor.CQRS.Abstractions;
|
||||||
|
|
||||||
public static class ServiceCollectionExtensions
|
public static class ServiceCollectionExtensions
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddQuery<TQuery, TQueryResult, TQueryHandler>(this IServiceCollection services)
|
public static IServiceCollection AddQuery<TQuery, TQueryResult, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TQueryHandler>(this IServiceCollection services)
|
||||||
where TQuery : class
|
where TQuery : class
|
||||||
where TQueryHandler : class, IQueryHandler<TQuery, TQueryResult>
|
where TQueryHandler : class, IQueryHandler<TQuery, TQueryResult>
|
||||||
{
|
{
|
||||||
@ -19,7 +20,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddCommand<TCommand, TCommandResult, TCommandHandler>(this IServiceCollection services)
|
public static IServiceCollection AddCommand<TCommand, TCommandResult, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TCommandHandler>(this IServiceCollection services)
|
||||||
where TCommand : class
|
where TCommand : class
|
||||||
where TCommandHandler : class, ICommandHandler<TCommand, TCommandResult>
|
where TCommandHandler : class, ICommandHandler<TCommand, TCommandResult>
|
||||||
{
|
{
|
||||||
@ -33,7 +34,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddCommand<TCommand, TCommandHandler>(this IServiceCollection services)
|
public static IServiceCollection AddCommand<TCommand, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TCommandHandler>(this IServiceCollection services)
|
||||||
where TCommand : class
|
where TCommand : class
|
||||||
where TCommandHandler : class, ICommandHandler<TCommand>
|
where TCommandHandler : class, ICommandHandler<TCommand>
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,20 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>true</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
<IsAotCompatible>false</IsAotCompatible>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -8,28 +8,22 @@ using OpenHarbor.CQRS.AspNetCore.Abstractions.Attributes;
|
|||||||
|
|
||||||
namespace OpenHarbor.CQRS.AspNetCore.Mvc;
|
namespace OpenHarbor.CQRS.AspNetCore.Mvc;
|
||||||
|
|
||||||
public class QueryControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
|
public class QueryControllerFeatureProvider(ServiceProvider serviceProvider)
|
||||||
|
: IApplicationFeatureProvider<ControllerFeature>
|
||||||
{
|
{
|
||||||
private readonly ServiceProvider _serviceProvider;
|
|
||||||
|
|
||||||
public QueryControllerFeatureProvider(ServiceProvider serviceProvider)
|
|
||||||
{
|
|
||||||
_serviceProvider = serviceProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
|
public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
|
||||||
{
|
{
|
||||||
var queryDiscovery = this._serviceProvider.GetRequiredService<IQueryDiscovery>();
|
var queryDiscovery = serviceProvider.GetRequiredService<IQueryDiscovery>();
|
||||||
foreach (var f in queryDiscovery.GetQueries())
|
foreach (var queryMeta in queryDiscovery.GetQueries())
|
||||||
{
|
{
|
||||||
var ignoreAttribute = f.QueryType.GetCustomAttribute<QueryControllerIgnoreAttribute>();
|
var ignoreAttribute = queryMeta.QueryType.GetCustomAttribute<QueryControllerIgnoreAttribute>();
|
||||||
if (ignoreAttribute != null)
|
if (ignoreAttribute != null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (f.Category != "BasicQuery")
|
if (queryMeta.Category != "BasicQuery")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var controllerType = typeof(QueryController<,>).MakeGenericType(f.QueryType, f.QueryResultType);
|
var controllerType = typeof(QueryController<,>).MakeGenericType(queryMeta.QueryType, queryMeta.QueryResultType);
|
||||||
var controllerTypeInfo = controllerType.GetTypeInfo();
|
var controllerTypeInfo = controllerType.GetTypeInfo();
|
||||||
feature.Controllers.Add(controllerTypeInfo);
|
feature.Controllers.Add(controllerTypeInfo);
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,22 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>false</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
||||||
<IsAotCompatible>true</IsAotCompatible>
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -16,4 +27,8 @@
|
|||||||
<ProjectReference Include="..\OpenHarbor.CQRS.AspNetCore.Abstractions\OpenHarbor.CQRS.AspNetCore.Abstractions.csproj" />
|
<ProjectReference Include="..\OpenHarbor.CQRS.AspNetCore.Abstractions\OpenHarbor.CQRS.AspNetCore.Abstractions.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,12 +1,23 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFrameworks>netstandard2.1;net8.0</TargetFrameworks>
|
||||||
|
<IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">true</IsAotCompatible>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="PoweredSoft.DynamicQuery.Core" Version="3.0.1" />
|
<PackageReference Include="PoweredSoft.DynamicQuery.Core" Version="3.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -1,12 +1,21 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://www.gravatar.com/avatar/9cecda5822fc5d4d2e61ec03da571b3d</PackageIconUrl>
|
<IsAotCompatible>false</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
|
||||||
<Company>Open Harbor</Company>
|
<Company>Open Harbor</Company>
|
||||||
<IsAotCompatible>true</IsAotCompatible>
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -1,11 +1,22 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>true</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Pluralize.NET" Version="1.0.2" />
|
<PackageReference Include="Pluralize.NET" Version="1.0.2" />
|
||||||
<PackageReference Include="PoweredSoft.DynamicQuery" Version="3.0.1" />
|
<PackageReference Include="PoweredSoft.DynamicQuery" Version="3.0.1" />
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
using OpenHarbor.CQRS.Abstractions;
|
using OpenHarbor.CQRS.Abstractions;
|
||||||
using OpenHarbor.CQRS.Abstractions.Discovery;
|
using OpenHarbor.CQRS.Abstractions.Discovery;
|
||||||
@ -35,7 +36,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryWithProvider<TSource, TQueryableProvider>(this IServiceCollection services, string name = null)
|
public static IServiceCollection AddDynamicQueryWithProvider<TSource, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TQueryableProvider>(this IServiceCollection services, string name = null)
|
||||||
where TQueryableProvider : class, IQueryableProvider<TSource>
|
where TQueryableProvider : class, IQueryableProvider<TSource>
|
||||||
where TSource : class
|
where TSource : class
|
||||||
{
|
{
|
||||||
@ -44,7 +45,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryWithParamsAndProvider<TSource, TParams, TQueryableProvider>(this IServiceCollection services, string name = null)
|
public static IServiceCollection AddDynamicQueryWithParamsAndProvider<TSource, TParams, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TQueryableProvider>(this IServiceCollection services, string name = null)
|
||||||
where TQueryableProvider : class, IQueryableProvider<TSource>
|
where TQueryableProvider : class, IQueryableProvider<TSource>
|
||||||
where TParams : class
|
where TParams : class
|
||||||
where TSource : class
|
where TSource : class
|
||||||
@ -84,19 +85,19 @@ public static class ServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddAlterQueryable<TSourceAndDestination, TService>(this IServiceCollection services)
|
public static IServiceCollection AddAlterQueryable<TSourceAndDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
|
||||||
where TService : class, IAlterQueryableService<TSourceAndDestination, TSourceAndDestination>
|
where TService : class, IAlterQueryableService<TSourceAndDestination, TSourceAndDestination>
|
||||||
{
|
{
|
||||||
return services.AddTransient<IAlterQueryableService<TSourceAndDestination, TSourceAndDestination>, TService>();
|
return services.AddTransient<IAlterQueryableService<TSourceAndDestination, TSourceAndDestination>, TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddAlterQueryable<TSource, TDestination, TService>(this IServiceCollection services)
|
public static IServiceCollection AddAlterQueryable<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
|
||||||
where TService : class, IAlterQueryableService<TSource, TDestination>
|
where TService : class, IAlterQueryableService<TSource, TDestination>
|
||||||
{
|
{
|
||||||
return services.AddTransient<IAlterQueryableService<TSource, TDestination>, TService>();
|
return services.AddTransient<IAlterQueryableService<TSource, TDestination>, TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddAlterQueryableWithParams<TSourceAndTDestination, TParams, TService>
|
public static IServiceCollection AddAlterQueryableWithParams<TSourceAndTDestination, TParams, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>
|
||||||
(this IServiceCollection services)
|
(this IServiceCollection services)
|
||||||
where TParams : class
|
where TParams : class
|
||||||
where TService : class, IAlterQueryableService<TSourceAndTDestination, TSourceAndTDestination, TParams>
|
where TService : class, IAlterQueryableService<TSourceAndTDestination, TSourceAndTDestination, TParams>
|
||||||
@ -104,7 +105,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services.AddTransient<IAlterQueryableService< TSourceAndTDestination, TSourceAndTDestination, TParams>, TService>();
|
return services.AddTransient<IAlterQueryableService< TSourceAndTDestination, TSourceAndTDestination, TParams>, TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddAlterQueryableWithParams<TSource, TDestination, TParams, TService>
|
public static IServiceCollection AddAlterQueryableWithParams<TSource, TDestination, TParams, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>
|
||||||
(this IServiceCollection services)
|
(this IServiceCollection services)
|
||||||
where TParams : class
|
where TParams : class
|
||||||
where TService : class, IAlterQueryableService<TSource, TDestination, TParams>
|
where TService : class, IAlterQueryableService<TSource, TDestination, TParams>
|
||||||
@ -112,7 +113,7 @@ public static class ServiceCollectionExtensions
|
|||||||
return services.AddTransient<IAlterQueryableService<TSource, TDestination, TParams>, TService>();
|
return services.AddTransient<IAlterQueryableService<TSource, TDestination, TParams>, TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryInterceptor<TSource, TDestination, TInterceptor>(this IServiceCollection services)
|
public static IServiceCollection AddDynamicQueryInterceptor<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TInterceptor>(this IServiceCollection services)
|
||||||
where TInterceptor : class, IQueryInterceptor
|
where TInterceptor : class, IQueryInterceptor
|
||||||
{
|
{
|
||||||
services.TryAddTransient<TInterceptor>();
|
services.TryAddTransient<TInterceptor>();
|
||||||
@ -120,7 +121,7 @@ public static class ServiceCollectionExtensions
|
|||||||
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(TInterceptor)));
|
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(TInterceptor)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, T1, T2>(this IServiceCollection services)
|
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T1, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T2>(this IServiceCollection services)
|
||||||
where T1 : class, IQueryInterceptor
|
where T1 : class, IQueryInterceptor
|
||||||
where T2 : class, IQueryInterceptor
|
where T2 : class, IQueryInterceptor
|
||||||
{
|
{
|
||||||
@ -130,7 +131,7 @@ public static class ServiceCollectionExtensions
|
|||||||
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2)));
|
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, T1, T2, T3>(this IServiceCollection services)
|
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T1, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T2, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T3>(this IServiceCollection services)
|
||||||
where T1 : class, IQueryInterceptor
|
where T1 : class, IQueryInterceptor
|
||||||
where T2 : class, IQueryInterceptor
|
where T2 : class, IQueryInterceptor
|
||||||
where T3 : class, IQueryInterceptor
|
where T3 : class, IQueryInterceptor
|
||||||
@ -142,7 +143,7 @@ public static class ServiceCollectionExtensions
|
|||||||
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2), typeof(T3)));
|
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2), typeof(T3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, T1, T2, T3, T4>(this IServiceCollection services)
|
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T1, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T2, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T3, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T4>(this IServiceCollection services)
|
||||||
where T1 : class, IQueryInterceptor
|
where T1 : class, IQueryInterceptor
|
||||||
where T2 : class, IQueryInterceptor
|
where T2 : class, IQueryInterceptor
|
||||||
where T3 : class, IQueryInterceptor
|
where T3 : class, IQueryInterceptor
|
||||||
@ -156,7 +157,7 @@ public static class ServiceCollectionExtensions
|
|||||||
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2), typeof(T3), typeof(T4)));
|
new DynamicQueryInterceptorProvider<TSource, TDestination>(typeof(T1), typeof(T2), typeof(T3), typeof(T4)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, T1, T2, T3, T4, T5>(this IServiceCollection services)
|
public static IServiceCollection AddDynamicQueryInterceptors<TSource, TDestination, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T1, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T2, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T3, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T4, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T5>(this IServiceCollection services)
|
||||||
where T1 : class, IQueryInterceptor
|
where T1 : class, IQueryInterceptor
|
||||||
where T2 : class, IQueryInterceptor
|
where T2 : class, IQueryInterceptor
|
||||||
where T3 : class, IQueryInterceptor
|
where T3 : class, IQueryInterceptor
|
||||||
|
@ -1,11 +1,22 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>true</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FluentValidation" Version="10.4.0" />
|
<PackageReference Include="FluentValidation" Version="10.4.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using FluentValidation;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using FluentValidation;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using OpenHarbor.CQRS.Abstractions;
|
using OpenHarbor.CQRS.Abstractions;
|
||||||
|
|
||||||
@ -6,14 +7,14 @@ namespace OpenHarbor.CQRS.FluentValidation;
|
|||||||
|
|
||||||
public static class ServiceCollectionExtensions
|
public static class ServiceCollectionExtensions
|
||||||
{
|
{
|
||||||
private static IServiceCollection AddFluentValidator<T, TValidator>(this IServiceCollection services)
|
private static IServiceCollection AddFluentValidator<T, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TValidator>(this IServiceCollection services)
|
||||||
where TValidator : class, IValidator<T>
|
where TValidator : class, IValidator<T>
|
||||||
{
|
{
|
||||||
services.AddTransient<IValidator<T>, TValidator>();
|
services.AddTransient<IValidator<T>, TValidator>();
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddCommand<TCommand, TCommandHandler, TValidator>(this IServiceCollection services)
|
public static IServiceCollection AddCommand<TCommand, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TCommandHandler, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TValidator>(this IServiceCollection services)
|
||||||
where TCommand : class
|
where TCommand : class
|
||||||
where TCommandHandler : class, ICommandHandler<TCommand>
|
where TCommandHandler : class, ICommandHandler<TCommand>
|
||||||
where TValidator : class, IValidator<TCommand>
|
where TValidator : class, IValidator<TCommand>
|
||||||
@ -22,7 +23,7 @@ public static class ServiceCollectionExtensions
|
|||||||
.AddFluentValidator<TCommand, TValidator>();
|
.AddFluentValidator<TCommand, TValidator>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddCommand<TCommand, TCommandResult, TCommandHandler, TValidator>(this IServiceCollection services)
|
public static IServiceCollection AddCommand<TCommand, TCommandResult, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TCommandHandler, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TValidator>(this IServiceCollection services)
|
||||||
where TCommand : class
|
where TCommand : class
|
||||||
where TCommandHandler : class, ICommandHandler<TCommand, TCommandResult>
|
where TCommandHandler : class, ICommandHandler<TCommand, TCommandResult>
|
||||||
where TValidator : class, IValidator<TCommand>
|
where TValidator : class, IValidator<TCommand>
|
||||||
@ -31,13 +32,14 @@ public static class ServiceCollectionExtensions
|
|||||||
.AddFluentValidator<TCommand, TValidator>();
|
.AddFluentValidator<TCommand, TValidator>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddQuery<TQuery, TQueryResult, TQueryHandler, TValidator>(this IServiceCollection services)
|
public static IServiceCollection AddQuery<TQuery, TQueryResult, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TQueryHandler, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TValidator>(this IServiceCollection services)
|
||||||
where TQuery : class
|
where TQuery : class
|
||||||
where TQueryHandler : class, IQueryHandler<TQuery, TQueryResult>
|
where TQueryHandler : class, IQueryHandler<TQuery, TQueryResult>
|
||||||
where TValidator : class, IValidator<TQuery>
|
where TValidator : class, IValidator<TQuery>
|
||||||
{
|
{
|
||||||
services.AddQuery<TQuery, TQueryResult, TQueryHandler>()
|
services.AddQuery<TQuery, TQueryResult, TQueryHandler>()
|
||||||
.AddFluentValidator<TQuery, TValidator>();
|
.AddFluentValidator<TQuery, TValidator>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
OpenHarbor.CQRS/.DS_Store
vendored
Normal file
BIN
OpenHarbor.CQRS/.DS_Store
vendored
Normal file
Binary file not shown.
@ -1,11 +1,23 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<PackageIconUrl>https://avatars.githubusercontent.com/u/52874619?v=4</PackageIconUrl>
|
<IsAotCompatible>true</IsAotCompatible>
|
||||||
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
<Authors>David Lebee, Mathias Beaulieu-Duncan</Authors>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
|
<Company>Open Harbor</Company>
|
||||||
|
<PackageIcon>icon.png</PackageIcon>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryUrl>https://git.openharbor.io/Open-Harbor/dotnet-cqrs</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\icon.png" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
<None Include="..\README.md" Pack="true" PackagePath="" CopyToOutputDirectory="Always" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\OpenHarbor.CQRS.Abstractions\OpenHarbor.CQRS.Abstractions.csproj" />
|
<ProjectReference Include="..\OpenHarbor.CQRS.Abstractions\OpenHarbor.CQRS.Abstractions.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
Loading…
Reference in New Issue
Block a user