Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
56677fd
Introduce CoreEx.Cosmos: typed CRUD, query, and multi-tenant/filter d…
chullybun Aug 18, 2026
3383c7d
Merge main.
chullybun Sep 1, 2026
6b4713c
Remove duplicate project entries in CoreEx.slnx from merge
chullybun Sep 1, 2026
9e78313
Add CosmosDbUnitOfWork transactional outbox, matching the SQL invoker…
chullybun Sep 1, 2026
d692952
Promote ASB circuit-breaker/retry resiliency into generic CoreEx.Host…
chullybun Sep 2, 2026
724ef6c
Implement Cosmos outbox relay happy path; harmonize outbox metrics/tr…
chullybun Sep 2, 2026
9e87174
Update package documentation for Cosmos outbox relay, metrics harmoni…
chullybun Sep 2, 2026
884f781
Add configurable transient-retry resiliency to ServiceBusPublisher
chullybun Sep 3, 2026
4d93267
Record outbox relay lag metrics on failure too, and document the resu…
chullybun Sep 3, 2026
d4f4003
Promote ASB/Cosmos circuit-breaker/retry resiliency into generic Core…
chullybun Sep 3, 2026
4db87db
Fix incompatible outbox relay PartitionSize/PerWorkerPartitionCount d…
chullybun Sep 3, 2026
9d2d8a5
Add Cosmos DB test database/container creation and data seeding support
chullybun Sep 4, 2026
10033fb
Stop auto-copying PartitionKey in Mapper's standard property mapping
chullybun Sep 4, 2026
cb7ab8c
Add Cosmos DB test database/container creation and data seeding support
chullybun Sep 6, 2026
7f8deef
Add Contoso.Customers sample domain (Cosmos-backed) and PartitionKey.…
chullybun Sep 16, 2026
baa7e6e
Add Cosmos outbox DI parity, partition-key API refactor, and Partitio…
chullybun Sep 17, 2026
d9ee0b7
Add Customer Patch/Read tests, fix Cosmos ETag/paging bugs, and reloc…
chullybun Sep 18, 2026
1919176
Add Cosmos DB multi-set query support (SelectMultiSetAsync)
chullybun Sep 19, 2026
78f5624
Add Result<T> (ROP) counterpart SelectMultiSetWithResultAsync for Cos…
chullybun Sep 19, 2026
96e3784
Fix SelectMultiSetWithResultAsync: Result is for errors, not exceptions
chullybun Sep 19, 2026
d035944
Improve outbox relay distributed tracing
chullybun Sep 19, 2026
2c291a4
Address PR review comments and fix flaky ServiceBus receiver test
chullybun Sep 19, 2026
6ef37c2
Fix CosmosDbQuery.AsQueryable to always apply ApplyFilters (BypassFil…
chullybun Sep 19, 2026
ff628c8
Fix transactional upsert partition-key resolution order; correct Bypa…
chullybun Sep 19, 2026
2be0e8b
fix(cosmos): enforce type-discriminator isolation and destination-pub…
chullybun Sep 19, 2026
e12715a
fix(cosmos): generalize Update pre-read isolation; fix outbox exclusi…
chullybun Sep 19, 2026
2663a6c
fix(cosmos): configure model options once per key; validate outbox co…
chullybun Sep 19, 2026
36598c0
fix: CosmosDb multi-set filtered-item count bug, outbox relay dispose…
chullybun Sep 19, 2026
431d3d4
fix(cosmos): restore caller's JsonDataReader options state, clear Fus…
chullybun Sep 19, 2026
200948e
Fix multi-set query-only-filter enforcement gap and outbox lease-cont…
chullybun Sep 20, 2026
bee3da4
Fix outbox-exclusion fallback to also recognize unannotated conventio…
chullybun Sep 20, 2026
778a2a7
Fix explicit WithTypeDiscriminator override not being persisted on Cr…
chullybun Sep 20, 2026
3e3296f
Add Cosmos repository support to reference-data code generation
chullybun Sep 20, 2026
17fd7c0
fix(cosmos): resolve real type-discriminator override in multi-set qu…
chullybun Sep 20, 2026
c0f0613
fix: scope outbox rollback-vs-dequeue decision to this invocation, no…
chullybun Sep 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ Rules that are easy to violate and cause real breakage or wrong choices:
- **No AutoMapper** — do not introduce AutoMapper. All mapping is explicit via `Mapper<>` (application layer) or `BiDirectionMapper<>` (infrastructure layer).
- **`.ConfigureAwait(false)`** — always use it in service and repository code.
- **File-scoped namespaces** — `namespace Foo.Bar;` only; never block-scoped `namespace Foo.Bar { }`.
- **Query materialization across data-access packages** — a new data-access package (e.g. `CoreEx.Cosmos`, a future `CoreEx.MongoDb`) should not materialize queries via `IQueryable<T>` extension methods named with a bare, generic-sounding verb (`ToListAsync`, `ToItemsResultAsync`, `ToMappedItemsAsync`, etc.) if another CoreEx package (or a third-party one, e.g. `Microsoft.EntityFrameworkCore`) already defines an identically-shaped one on the same receiver type. C# extension-method resolution has no precedence rule between two equally-applicable candidates from different namespaces — it is a hard `CS0121` ambiguous-call compile error in any file that imports both namespaces, not merely a style clash. The preferred fix is a package-owned query-wrapper type (e.g. `CoreEx.Cosmos`'s `CosmosDbQuery<TModel>`, returned from `CosmosDbContainer<TModel>.Query(...)` instead of a bare `IQueryable<TModel>`) so materializers are instance methods on that type — a different receiver type structurally cannot collide, so plain names (`ToListAsync`, `ToItemsResultAsync`, ...) are safe there; see [`CoreEx.Cosmos/AGENTS.md`](./src/CoreEx.Cosmos/AGENTS.md#do-not) for the worked example. Only fall back to prefixing with the provider name (`ToCosmosListAsync`, `ToCosmosItemsResultAsync`, ...) if a package genuinely must expose `IQueryable<T>` extensions directly instead of owning a wrapper type.

---

Expand Down
1 change: 1 addition & 0 deletions CoreEx.Core.Test.Sequential.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"projects": [
"tests/CoreEx.Azure.Messaging.ServiceBus.Test.Unit/CoreEx.Azure.Messaging.ServiceBus.Test.Unit.csproj",
"tests/CoreEx.Caching.Redis.Test.Unit/CoreEx.Caching.Redis.Test.Unit.csproj",
"tests/CoreEx.Cosmos.Test.Unit/CoreEx.Cosmos.Test.Unit.csproj",
"tests/CoreEx.Database.SqlServer.Test.Unit/CoreEx.Database.SqlServer.Test.Unit.csproj",
"tests/CoreEx.Database.Postgres.Test.Unit/CoreEx.Database.Postgres.Test.Unit.csproj"
]
Expand Down
2 changes: 2 additions & 0 deletions CoreEx.Core.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"src/CoreEx.AspNetCore.NSwag/CoreEx.AspNetCore.NSwag.csproj",
"src/CoreEx.Azure.Messaging.ServiceBus/CoreEx.Azure.Messaging.ServiceBus.csproj",
"src/CoreEx.Caching.FusionCache/CoreEx.Caching.FusionCache.csproj",
"src/CoreEx.Cosmos/CoreEx.Cosmos.csproj",
"src/CoreEx.Data/CoreEx.Data.csproj",
"src/CoreEx.Data.GraphQL/CoreEx.Data.GraphQL.csproj",
"src/CoreEx.Database/CoreEx.Database.csproj",
Expand All @@ -23,6 +24,7 @@
"tests/CoreEx.AspNetCore.Test.Unit/CoreEx.AspNetCore.Test.Unit.csproj",
"tests/CoreEx.Azure.Messaging.ServiceBus.Test.Unit/CoreEx.Azure.Messaging.ServiceBus.Test.Unit.csproj",
"tests/CoreEx.Caching.Redis.Test.Unit/CoreEx.Caching.Redis.Test.Unit.csproj",
"tests/CoreEx.Cosmos.Test.Unit/CoreEx.Cosmos.Test.Unit.csproj",
"tests/CoreEx.Data.Test.Unit/CoreEx.Data.Test.Unit.csproj",
"tests/CoreEx.Data.GraphQL.Test.Unit/CoreEx.Data.GraphQL.Test.Unit.csproj",
"tests/CoreEx.Database.Postgres.Test.Unit/CoreEx.Database.Postgres.Test.Unit.csproj",
Expand Down
8 changes: 8 additions & 0 deletions CoreEx.Samples.Build.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
"path": "CoreEx.slnx",
"projects": [
"samples/aspire/Contoso.Aspire/Contoso.Aspire.csproj",
"samples/src/Contoso.Customers.Api/Contoso.Customers.Api.csproj",
"samples/src/Contoso.Customers.Application/Contoso.Customers.Application.csproj",
"samples/src/Contoso.Customers.CodeGen/Contoso.Customers.CodeGen.csproj",
"samples/src/Contoso.Customers.Contracts/Contoso.Customers.Contracts.csproj",
"samples/src/Contoso.Customers.Infrastructure/Contoso.Customers.Infrastructure.csproj",
"samples/src/Contoso.Order.Workflow.Client/Contoso.Order.Workflow.Client.csproj",
"samples/src/Contoso.Order.Workflow.Worker/Contoso.Order.Workflow.Worker.csproj",
"samples/src/Contoso.Order.Workflow.Workflow/Contoso.Order.Workflow.Workflow.csproj",
Expand All @@ -28,6 +33,9 @@
"samples/src/Contoso.Shopping.Infrastructure/Contoso.Shopping.Infrastructure.csproj",
"samples/src/Contoso.Shopping.Relay/Contoso.Shopping.Relay.csproj",
"samples/src/Contoso.Shopping.Subscribe/Contoso.Shopping.Subscribe.csproj",
"samples/tests/Contoso.Customers.Test.Api/Contoso.Customers.Test.Api.csproj",
"samples/tests/Contoso.Customers.Test.Common/Contoso.Customers.Test.Common.csproj",
"samples/tests/Contoso.Customers.Test.Unit/Contoso.Customers.Test.Unit.csproj",
"samples/tests/Contoso.E2E.Runner/Contoso.E2E.Runner.csproj",
"samples/tests/Contoso.Orders.Test.Api/Contoso.Orders.Test.Api.csproj",
"samples/tests/Contoso.Orders.Test.Common/Contoso.Orders.Test.Common.csproj",
Expand Down
2 changes: 2 additions & 0 deletions CoreEx.Samples.Test.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
"solution": {
"path": "CoreEx.slnx",
"projects": [
"samples/tests/Contoso.Customers.Test.Api/Contoso.Customers.Test.Api.csproj",
"samples/tests/Contoso.Customers.Test.Unit/Contoso.Customers.Test.Unit.csproj",
"samples/tests/Contoso.Orders.Test.Api/Contoso.Orders.Test.Api.csproj",
"samples/tests/Contoso.Orders.Test.Unit/Contoso.Orders.Test.Unit.csproj",
"samples/tests/Contoso.Products.Test.Api/Contoso.Products.Test.Api.csproj",
Expand Down
Loading
Loading