Skip to content

Polecat support and DCB workflows with Marten and Polecat#2271

Merged
jeremydmiller merged 1 commit intomainfrom
dcb-polecat
Mar 9, 2026
Merged

Polecat support and DCB workflows with Marten and Polecat#2271
jeremydmiller merged 1 commit intomainfrom
dcb-polecat

Conversation

@jeremydmiller
Copy link
Member

Back to Nuget references

Replace JasperFx project references with NuGet package references

Update to JasperFx 1.21.0, JasperFx.Events 1.23.0, JasperFx.RuntimeCompiler 4.4.0.

Restore accidentally removed CourseCreated event record

The CourseCreated record was accidentally deleted when adding MarkdownSnippets region markers to UniversityEvents.cs.

Use EventTagQuery shorthand syntax in DCB boundary model sample

Replace verbose Or<TEvent, TTag>() calls with the new For(tag).AndEventsOfType<...>() shorthand in the university subscription handler example.

Convert natural key and DCB docs to use MarkdownSnippets includes

Replace inline code samples with includes that reference DCB University domain model files and natural key handler workflow tests.

Replace manual Weasel table creation in EF Core tests with UseEntityFrameworkCoreWolverineManagedMigrations

Add Polecat natural key aggregate handler end-to-end tests

Fix PolecatTests build by overriding TargetFrameworks (plural) from Directory.Build.props — using singular TargetFramework was silently ignored. Add 3 end-to-end tests for the Polecat aggregate handler workflow with natural keys, and remove the ComplianceTests dependency that was incompatible with the net10.0-only Wolverine.Polecat project.

Add natural key support for aggregate handler workflow in Wolverine

Enable [WriteAggregate] to resolve aggregate identity from natural key properties when standard identity resolution (by Guid/string) fails. The code generation now calls FetchForWriting<TDoc, TNaturalKey>() for natural key aggregates, bypassing batch queries which don't support the two-type-parameter overload. Includes end-to-end tests for the Marten integration with single event, multiple events, and IEventStream patterns.

Add Wolverine.Polecat library and comprehensive documentation

Port Wolverine.Marten integration to Wolverine.Polecat for SQL Server/Polecat, including aggregate handler workflow, transactional middleware, outbox/inbox, saga storage, event forwarding, subscriptions, and multi-tenancy support. Add 13 documentation pages covering all integration features plus Vitepress navigation config updates.

Add [BoundaryModel] attribute and codegen pipeline for DCB aggregate handler workflow

  • BoundaryModelAttribute: parameter attribute that triggers FetchForWritingByTags codegen, validates Load/Before method returning EventTagQuery, routes return values through IEventBoundary.AppendOne()
  • LoadBoundaryFrame: async codegen frame calling session.Events.FetchForWritingByTags() with lazy EventTagQuery resolution from Load method middleware
  • BoundaryEventCapture: handles IEnumerable, IAsyncEnumerable, and individual return values by routing through IEventBoundary.AppendOne/AppendMany
  • Added boundary_model_workflow_tests with 5 tests covering happy path, business error cases, and cross-tag-type FetchForWritingByTags

Ongoing work for CritterWatch, Marten changes, DCB support with Marten. Temporarily using project references

Port AxonIQ university-demo to Wolverine DCB patterns

Port events, commands, aggregates, and handlers from the AxonIQ university-demo (Java/Axon) into MartenTests/Dcb/University using Wolverine conventions and Marten's DCB tag-based APIs. Each command is co-located with its handler in a single file.

Also fix FakeEvent compilation by implementing the new IEvent.Tags, AddTag, and AddTag(EventTag) members from JasperFx.Events.

Back to Nuget references

Replace JasperFx project references with NuGet package references

Update to JasperFx 1.21.0, JasperFx.Events 1.23.0,
JasperFx.RuntimeCompiler 4.4.0.

Restore accidentally removed CourseCreated event record

The CourseCreated record was accidentally deleted when adding
MarkdownSnippets region markers to UniversityEvents.cs.

Use EventTagQuery shorthand syntax in DCB boundary model sample

Replace verbose Or<TEvent, TTag>() calls with the new
For(tag).AndEventsOfType<...>() shorthand in the university
subscription handler example.

Convert natural key and DCB docs to use MarkdownSnippets includes

Replace inline code samples with <!-- snippet: --> includes that reference
DCB University domain model files and natural key handler workflow tests.

Replace manual Weasel table creation in EF Core tests with UseEntityFrameworkCoreWolverineManagedMigrations

Add Polecat natural key aggregate handler end-to-end tests

Fix PolecatTests build by overriding TargetFrameworks (plural) from
Directory.Build.props — using singular TargetFramework was silently
ignored. Add 3 end-to-end tests for the Polecat aggregate handler
workflow with natural keys, and remove the ComplianceTests dependency
that was incompatible with the net10.0-only Wolverine.Polecat project.

Add natural key support for aggregate handler workflow in Wolverine

Enable [WriteAggregate] to resolve aggregate identity from natural key
properties when standard identity resolution (by Guid/string) fails.
The code generation now calls FetchForWriting<TDoc, TNaturalKey>() for
natural key aggregates, bypassing batch queries which don't support the
two-type-parameter overload. Includes end-to-end tests for the Marten
integration with single event, multiple events, and IEventStream patterns.

Add Wolverine.Polecat library and comprehensive documentation

Port Wolverine.Marten integration to Wolverine.Polecat for SQL Server/Polecat,
including aggregate handler workflow, transactional middleware, outbox/inbox,
saga storage, event forwarding, subscriptions, and multi-tenancy support.
Add 13 documentation pages covering all integration features plus Vitepress
navigation config updates.

Add [BoundaryModel] attribute and codegen pipeline for DCB aggregate handler workflow

- BoundaryModelAttribute: parameter attribute that triggers FetchForWritingByTags codegen,
  validates Load/Before method returning EventTagQuery, routes return values through
  IEventBoundary<T>.AppendOne()
- LoadBoundaryFrame: async codegen frame calling session.Events.FetchForWritingByTags<T>()
  with lazy EventTagQuery resolution from Load method middleware
- BoundaryEventCapture: handles IEnumerable, IAsyncEnumerable, and individual return values
  by routing through IEventBoundary<T>.AppendOne/AppendMany
- Added boundary_model_workflow_tests with 5 tests covering happy path, business error
  cases, and cross-tag-type FetchForWritingByTags

Ongoing work for CritterWatch, Marten changes, DCB support with Marten. Temporarily using project references

Port AxonIQ university-demo to Wolverine DCB patterns

Port events, commands, aggregates, and handlers from the AxonIQ
university-demo (Java/Axon) into MartenTests/Dcb/University using
Wolverine conventions and Marten's DCB tag-based APIs. Each command
is co-located with its handler in a single file.

Also fix FakeEvent<T> compilation by implementing the new IEvent.Tags,
AddTag<TTag>, and AddTag(EventTag) members from JasperFx.Events.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant