Skip to content

Event-storage E2: consume Weasel 9.15.0 — descriptor core moves to Weasel.Storage#4900

Merged
jeremydmiller merged 2 commits into
masterfrom
feat/event-storage-e2-consume-weasel-9-15
Jul 7, 2026
Merged

Event-storage E2: consume Weasel 9.15.0 — descriptor core moves to Weasel.Storage#4900
jeremydmiller merged 2 commits into
masterfrom
feat/event-storage-e2-consume-weasel-9-15

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Part of the #4821 / #4830 follow-on — moving the closed-shape event storage into Weasel.Storage so Polecat can ship its SQL Server event dialect. This slice consumes Weasel 9.15.0 (weasel#341), which physically relocated the dialect-neutral event descriptor core into the shared package. Marten deletes its copies and adapts.

Follows E0 (#4885) and E1 (#4898), both merged.

Moved to Weasel.Storage (deleted from Marten here)

  • RichEventStorageDescriptor, QuickEventStorageDescriptor, QuickWithServerTimestampsEventStorageDescriptor
  • IEventMetadataBinder + the 5 metadata binders (Sequence / Headers / Causation / Correlation / UserName)
  • IEventStoreSqlDialect

Marten-side adaptation (PostgresEventStoreDialect)

  • The three Build*Descriptor methods implement the neutral interface signatures (EventRegistry / IStorageSerializer) and downcast to EventGraph / ISerializer internally.
  • The mt_streams insert/update-version configurers stay Postgres-typed; a small Adapt() helper bridges them to the descriptors' neutral Action<Weasel.Core.ICommandBuilder, StreamAction> slots (the runtime builder is always the Postgres one, so the cast back is safe).
  • The Quick / QuickWithServerTimestamps storages cast the descriptor factory's neutral Weasel.Storage.IStorageOperation back to Marten's IStorageOperation.

PostgresEventStoreDialect, the storage classes, and the operations stay in Marten. The EventStorage/README.md notes the move.

Validation

  • EventSourcingTests: 1432 passed / 0 failed (net10)
  • TenantPartitionedEventsTests: 228 passed / 0 failed (net10)
  • Full Marten.slnx Debug + Release clean

Next: E3 — move the storage hierarchy (EventStorage<TId> + the three storages + EventStorageBuilder) and the per-event / stream / assert operations into Weasel.Storage (with new thin neutral op bases). That's the slice that unblocks Polecat's SqlServerEventStoreDialect.

🤖 Generated with Claude Code

jeremydmiller and others added 2 commits July 7, 2026 16:46
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XNfeNz73Q3EdiTgSeDbo96
…n Weasel.Storage

Consumes Weasel 9.15.0 (weasel#341), which relocated the dialect-neutral event
descriptor core into the shared Weasel.Storage package so Marten and Polecat
(SQL Server) share it. Marten deletes its copies and adapts the Postgres
dialect to the neutral contracts.

Deleted from Marten (now in namespace Weasel.Storage):
- RichEventStorageDescriptor / QuickEventStorageDescriptor /
  QuickWithServerTimestampsEventStorageDescriptor
- IEventMetadataBinder + the 5 metadata binders (Sequence / Headers /
  Causation / Correlation / UserName)
- IEventStoreSqlDialect

Marten-side adaptation (PostgresEventStoreDialect):
- The three Build*Descriptor methods implement the neutral interface signatures
  (EventRegistry / IStorageSerializer) and downcast to EventGraph / ISerializer
  internally.
- The stream-command configurers stay Postgres-typed; a small Adapt() helper
  bridges them to the descriptors' neutral Action<Weasel.Core.ICommandBuilder,
  StreamAction> slots (the runtime builder is always the Postgres one).
- Quick / QuickWithServerTimestamps storage cast the descriptor factory's
  neutral Weasel.Storage.IStorageOperation back to Marten's IStorageOperation.

PostgresEventStoreDialect, the storage classes, and the operations stay in
Marten. README notes the move.

Validated (net10): EventSourcingTests 1432, TenantPartitionedEventsTests 228,
all green; full solution Debug + Release clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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