dotnet-cqrs/docs/PACKAGE_INDEX.md
2026-03-08 14:02:19 -04:00

12 KiB

Package Index

Complete reference for all 18 NuGet packages in the Svrnty.CQRS framework.

Overview

# Package Path NuGet Package
1 Svrnty.CQRS.Abstractions Svrnty.CQRS.Abstractions/ Yes
2 Svrnty.CQRS Svrnty.CQRS/ Yes
3 Svrnty.CQRS.MinimalApi Svrnty.CQRS.MinimalApi/ Yes
4 Svrnty.CQRS.Grpc Svrnty.CQRS.Grpc/ Yes
5 Svrnty.CQRS.Grpc.Abstractions Svrnty.CQRS.Grpc.Abstractions/ Yes
6 Svrnty.CQRS.Grpc.Generators Svrnty.CQRS.Grpc.Generators/ Yes
7 Svrnty.CQRS.FluentValidation Svrnty.CQRS.FluentValidation/ Yes
8 Svrnty.CQRS.DynamicQuery.Abstractions Svrnty.CQRS.DynamicQuery.Abstractions/ Yes
9 Svrnty.CQRS.DynamicQuery Svrnty.CQRS.DynamicQuery/ Yes
10 Svrnty.CQRS.DynamicQuery.MinimalApi Svrnty.CQRS.DynamicQuery.MinimalApi/ Yes
11 Svrnty.CQRS.DynamicQuery.EntityFramework Svrnty.CQRS.DynamicQuery.EntityFramework/ Yes
12 Svrnty.CQRS.Events.Abstractions Svrnty.CQRS.Events.Abstractions/ Yes
13 Svrnty.CQRS.Events.RabbitMQ Svrnty.CQRS.Events.RabbitMQ/ Yes
14 Svrnty.CQRS.Sagas.Abstractions Svrnty.CQRS.Sagas.Abstractions/ Yes
15 Svrnty.CQRS.Sagas Svrnty.CQRS.Sagas/ Yes
16 Svrnty.CQRS.Sagas.RabbitMQ Svrnty.CQRS.Sagas.RabbitMQ/ Yes
17 Svrnty.CQRS.Notifications.Abstractions Svrnty.CQRS.Notifications.Abstractions/ Yes
18 Svrnty.CQRS.Notifications.Grpc Svrnty.CQRS.Notifications.Grpc/ Yes

Package Details

1. Svrnty.CQRS.Abstractions

Purpose: Core interfaces that define the CQRS contract. This is the only package your domain/application layer needs to reference.

Target: net10.0 | AOT: Yes

Key Types:

  • ICommandHandler<TCommand> -- Handler for commands with no return value
  • ICommandHandler<TCommand, TResult> -- Handler for commands returning a result
  • IQueryHandler<TQuery, TResult> -- Handler for queries
  • ICommandMeta / IQueryMeta -- Discovery metadata
  • ICommandDiscovery / IQueryDiscovery -- Service discovery interfaces
  • ICommandAuthorizationService<TCommand> -- Per-command authorization
  • IQueryAuthorizationService<TQuery> -- Per-query authorization
  • CommandNameAttribute / QueryNameAttribute -- Custom naming
  • IgnoreCommandAttribute / IgnoreQueryAttribute -- Exclude from auto-discovery

Internal Dependencies: None


2. Svrnty.CQRS

Purpose: Core registration and discovery engine. Provides the AddSvrntyCqrs() fluent API and auto-discovers registered handlers.

Target: net10.0 | AOT: Yes

Key Types:

  • CqrsBuilder -- Fluent builder for configuring transports and features
  • CqrsConfiguration -- Configuration state
  • ServiceCollectionExtensions.AddSvrntyCqrs() -- Entry point
  • ServiceCollectionExtensions.AddCommand<T, TResult, THandler>() -- Register a command handler
  • ServiceCollectionExtensions.AddQuery<T, TResult, THandler>() -- Register a query handler
  • CommandDiscovery / QueryDiscovery -- Default discovery implementations

Internal Dependencies: Svrnty.CQRS.Abstractions


3. Svrnty.CQRS.MinimalApi

Purpose: Maps registered commands and queries to ASP.NET Core Minimal API HTTP endpoints. Includes RFC 7807 Problem Details for validation errors.

Target: net10.0 | AOT: No

Key Types:

  • CqrsBuilderExtensions.AddMinimalApi() -- Enable HTTP endpoints
  • MinimalApiCqrsOptions -- Configuration (route prefixes, etc.)
  • ValidationFilter -- Endpoint filter for FluentValidation
  • WebApplicationExtensions.UseSvrntyCqrs() -- Map endpoints at startup
  • EndpointRouteBuilderExtensions -- Route mapping helpers

Internal Dependencies: Svrnty.CQRS.Abstractions, Svrnty.CQRS

External Dependencies: FluentValidation 11.x, Microsoft.AspNetCore.App


4. Svrnty.CQRS.Grpc

Purpose: Maps registered commands and queries to gRPC services. Uses Google Rich Error Model for structured validation errors.

Target: net10.0 | AOT: No

Key Types:

  • CqrsBuilderExtensions.AddGrpc() -- Enable gRPC endpoints
  • GrpcCqrsOptions -- Configuration (reflection, etc.)

Internal Dependencies: Svrnty.CQRS

External Dependencies: Grpc.AspNetCore 2.71.0


5. Svrnty.CQRS.Grpc.Abstractions

Purpose: Attributes for controlling gRPC code generation behavior.

Target: net10.0 | AOT: Yes

Key Types:

  • GrpcIgnoreAttribute -- Marks a command/query to be excluded from gRPC service generation

Internal Dependencies: None


6. Svrnty.CQRS.Grpc.Generators

Purpose: Roslyn source generator that auto-generates .proto files and gRPC service implementations from registered command/query types.

Target: netstandard2.0 (Roslyn component) | AOT: N/A

Key Types:

  • Source generator (analyzer DLL)
  • MSBuild WriteProtoFileTask -- Writes generated .proto files to disk
  • Build targets and props for NuGet consumers

Internal Dependencies: None (ships as analyzer)

External Dependencies: Microsoft.CodeAnalysis.CSharp 5.0.0, Microsoft.Build.Utilities.Core 17.0.0


7. Svrnty.CQRS.FluentValidation

Purpose: Integrates FluentValidation with command/query registration. Validators are automatically invoked before handler execution.

Target: net10.0 | AOT: Yes

Key Types:

  • ServiceCollectionExtensions.AddCommand<TCmd, TResult, THandler, TValidator>() -- Register command with validator
  • Automatic AbstractValidator<T> binding

Internal Dependencies: Svrnty.CQRS, Svrnty.CQRS.Abstractions

External Dependencies: FluentValidation 11.11.0


8. Svrnty.CQRS.DynamicQuery.Abstractions

Purpose: Interfaces for the dynamic query subsystem. Defines how data sources are provided and queries are intercepted.

Target: netstandard2.1, net10.0 (multi-target) | AOT: Conditional

Key Types:

  • IQueryableProvider<TSource> -- Provides an IQueryable<T> data source
  • IQueryableProviderOverride<TSource> -- Override default provider
  • IAlterQueryableService<TSource> -- Intercept/modify queryables
  • IDynamicQuery / IDynamicQueryParams -- Query parameter contracts
  • IDynamicQueryInterceptorProvider -- Interceptor registration

Internal Dependencies: None

External Dependencies: PoweredSoft.DynamicQuery.Core 3.0.1


9. Svrnty.CQRS.DynamicQuery

Purpose: Implementation of dynamic query execution with filtering, sorting, grouping, pagination, and aggregation.

Target: net10.0 | AOT: Yes

Key Types:

  • ServiceCollectionExtensions.AddDynamicQueryWithProvider<TSource, TProvider>() -- Register a queryable provider
  • Dynamic query handler pipeline

Internal Dependencies: Svrnty.CQRS.DynamicQuery.Abstractions, Svrnty.CQRS

External Dependencies: PoweredSoft.DynamicQuery 3.0.1, Pluralize.NET 1.0.2


10. Svrnty.CQRS.DynamicQuery.MinimalApi

Purpose: HTTP Minimal API endpoints for dynamic queries. Exposes each registered entity as a POST endpoint with filter/sort/page parameters.

Target: net10.0 | AOT: No

Key Types:

  • Endpoint mapping for dynamic query routes (/api/dynamic-query/{entity})

Internal Dependencies: Svrnty.CQRS.Abstractions, Svrnty.CQRS.DynamicQuery.Abstractions, Svrnty.CQRS.DynamicQuery

External Dependencies: Microsoft.AspNetCore.App


11. Svrnty.CQRS.DynamicQuery.EntityFramework

Purpose: Entity Framework Core integration for dynamic queries. Provides an EF-backed IAsyncQueryableService.

Target: net10.0 | AOT: No

Key Types:

  • EF Core queryable service adapter

Internal Dependencies: Svrnty.CQRS.DynamicQuery

External Dependencies: PoweredSoft.Data.EntityFrameworkCore 3.0.0


12. Svrnty.CQRS.Events.Abstractions

Purpose: Interfaces for domain event publishing.

Target: net10.0 | AOT: Yes

Key Types:

  • IDomainEvent -- Marker interface (EventId, OccurredAt)
  • IDomainEventPublisher -- Publish events to external systems

Internal Dependencies: None


13. Svrnty.CQRS.Events.RabbitMQ

Purpose: RabbitMQ-backed implementation of domain event publishing.

Target: net10.0 | AOT: No

Key Types:

  • RabbitMQ event publisher implementation

Internal Dependencies: Svrnty.CQRS.Events.Abstractions

External Dependencies: RabbitMQ.Client 7.0.0, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Logging.Abstractions, Microsoft.Extensions.Options


14. Svrnty.CQRS.Sagas.Abstractions

Purpose: Interfaces and types for the saga orchestration pattern with compensation (rollback) support.

Target: net10.0 | AOT: Yes

Key Types:

  • ISaga<TData> -- Define a saga with steps
  • ISagaBuilder<TData> -- Fluent builder for local and remote steps
  • ISagaStepBuilder<TData> -- Configure Execute/Compensate actions
  • ISagaRemoteStepBuilder<TData, TCommand> -- Remote command steps with timeout/retry
  • ISagaOrchestrator -- Start sagas, query state
  • ISagaData -- Marker interface (CorrelationId)
  • SagaState -- Persistent saga state (status, completed steps, errors)
  • SagaStatus -- Enum: NotStarted, InProgress, Completed, Failed, Compensating, Compensated
  • ISagaStateStore -- Persistence abstraction
  • ISagaMessageBus -- Messaging abstraction
  • SagaMessage / SagaStepResponse -- Message types
  • ISagaContext -- Step execution context

Internal Dependencies: None


15. Svrnty.CQRS.Sagas

Purpose: Default saga orchestrator implementation with step execution, compensation, and state management.

Target: net10.0 | AOT: Yes

Key Types:

  • Saga orchestrator engine
  • In-memory state store (default)

Internal Dependencies: Svrnty.CQRS, Svrnty.CQRS.Sagas.Abstractions

External Dependencies: Microsoft.Extensions.Logging.Abstractions, Microsoft.Extensions.Options


16. Svrnty.CQRS.Sagas.RabbitMQ

Purpose: RabbitMQ-backed message bus for distributed saga step execution across microservices.

Target: net10.0 | AOT: No

Key Types:

  • RabbitMQ saga message bus implementation

Internal Dependencies: Svrnty.CQRS.Sagas

External Dependencies: RabbitMQ.Client 7.0.0, Microsoft.Extensions.Hosting.Abstractions, Microsoft.Extensions.Options


17. Svrnty.CQRS.Notifications.Abstractions

Purpose: Interfaces for real-time notification streaming to clients.

Target: net10.0 | AOT: Yes

Key Types:

  • INotificationPublisher -- Publish notifications to subscribed clients
  • StreamingNotificationAttribute -- Marks a type as a streamable notification with a subscription key

Internal Dependencies: None


18. Svrnty.CQRS.Notifications.Grpc

Purpose: gRPC server-streaming implementation for real-time notifications.

Target: net10.0 | AOT: No

Key Types:

  • gRPC notification streaming service

Internal Dependencies: Svrnty.CQRS.Notifications.Abstractions

External Dependencies: Grpc.AspNetCore 2.71.0, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Logging.Abstractions


Additional Projects (not NuGet packages)

Project Path Purpose
Svrnty.Sample Svrnty.Sample/ Sample web application demonstrating commands, queries, gRPC, MinimalApi, DynamicQuery, and validation
Svrnty.CQRS.Tests tests/Svrnty.CQRS.Tests/ Unit and integration test suite