Aspire and azure blob storage#550
Conversation
…StorageBlobsProjector - Create new test project following Eventuous.Tests.Azure.ServiceBus structure - Add Testcontainers.Azurite package to Directory.Packages.props - Add IntegrationFixture with Azurite and KurrentDB containers - Test all On method variants (sync/async, state/context) for new and existing blobs - Test concurrent modification scenario (412 Precondition Failed) - Test no handler scenario (returns Ignored) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…face intent - Add helper methods: SetupContainer, SetupExistingBlob, GetBlobState, AssertSuccess, AssertIgnored - Rename projector classes to surface handler patterns (SyncStateProjector, etc.) - Group tests by handler variant with clear section comments - Test names now follow [Variant]_[Scenario]_[ExpectedBehavior] pattern - Reduce LOC from ~450 to ~330 (-27%) - Remove fixture parameter from CreateContext (unused) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…obServiceClient and container name - Add StorageBlobsProjector(BlobServiceClient, string containerName) constructor - Update test helper methods to work with container names instead of BlobContainerClient - Add GetContainer() helper to get BlobContainerClient from fixture - Update all test projector classes with new constructor overload - Update all tests to use fixture.BlobServiceClient with container names Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
PR Summary by QodoAdd Azure Blob Storage projector and .NET Aspire Azure sample Description
Diagram
High-Level Assessment
Files changed (39)
|
Code Review by Qodo
1.
|
|
Thanks so much for this @quezlatch — really nice work, and I appreciate you building it on top of your Service Bus piece. The blob projector is clean, the ETag-based optimistic concurrency is exactly right, and I love that you backed it with proper Azurite testcontainer tests covering the concurrent-modification cases. The Aspire sample is genuinely cool too — distributed debugging "just working" is a great thing to show off. 🙂 A few things before I can merge, mostly housekeeping rather than anything wrong with the code:
Couple of tiny optional nits: the None of this is a big deal — the hard part is done and it's looking great. Thanks again for contributing! 🙏 |
|
hi @alexeyzimarev glad it looks ok. I have:
|
|
I will take a stab at the docs as well. Assuming it should go in the |
This PR includes two new features instead of one I'm afraid, but they do dovetail together nicely. It builds on my Azure ServiceBus piece.
Azure blob storage
Adds a new projection target for persisting state to Azure Blob Storage. The implementation provides a flexible way to project events into blob-stored state objects.
Aspire Sample
A new sample demonstrates how to use Eventuous in a distributed .NET Aspire application with Azure services.
Aspire CLI, and really an IDE extensionPR prepared with the help of Mistral Vibe.