Azure blob storage projection#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.
|
Test Results 46 files + 24 46 suites +24 12m 20s ⏱️ - 3m 51s Results for commit 08ab02b. ± Comparison against base commit 7827d2f. This pull request removes 5 and adds 9 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
|
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 |
|
#556 is stacked on top of this |
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.
PR prepared with the help of Mistral Vibe.