Commit graph request/src
Author SHA1 Message Date
f9de3a99de
feat(dispatcher): add registration-time pipeline behavior ordering via AddBehavior<T>(order:)
Pipeline behavior ordering previously depended on discovery/registration
order. Add an AddBehavior<T>(order:) API that captures the order at
registration time; the BehaviorTypeIndex now orders matching behaviors by
that explicit order (lower runs first), falling back to registration order
for ties. Removed the runtime Order property approach.
2026-07-12 21:58:49 +02:00
8099898f3d
fix(dispatcher): resolve handlers in registration order across closed and open generics
Handler/behavior resolution previously forced closed generics before open
generics regardless of registration order, which was surprising and fragile.
TypeIndex now tracks each registered type's index and orders matching
candidates by registration order, so closed/open ordering is deterministic
and follows registration.
2026-07-12 21:58:47 +02:00
a7d7e9fbaa
fix(dispatcher): throw on ambiguous handlers instead of silent .First()
Multiple handlers for the same request were previously resolved via .First(),
with ordering depending on Type.GetInterfaces() order (non-deterministic).
Now ScalarRequestInvoker/StreamRequestInvoker throw InvalidOperationException
listing the candidate handlers when more than one matches.
2026-07-12 21:58:25 +02:00
15bf9a8e56
fix(validation): make Severity meaningful in Validation.IsValid
Validation.IsValid previously counted every problem regardless of severity,
leaving Severity inert. Now IsValid only fails on Error problems, so Warning
and Info no longer invalidate the result, and IsValidFor(Severity) lets
callers set the failing-severity threshold.
2026-07-12 21:54:45 +02:00
581b0a1ced
fix(validation): return no problems for null reference instance in Rule.Validate
Rule<T,TProperty>.Validate cast a null instance to T and validated it, so a
reference T whose accessor dereferences the instance threw
NullReferenceException on a direct validator.Validate(context) with a null
instance. Guard the null-instance path and return no problems instead.
2026-07-12 21:53:26 +02:00
fd6ed64755
fix(validation): guard null comparison bounds in comparison builders
Passing a null bound to GreaterThan/LessThan/Between etc. called
value.CompareTo(null), throwing NullReferenceException for non-null
reference-type values. Short-circuit when the bound is null so the rule is
satisfied instead of crashing.
2026-07-12 21:53:26 +02:00
5b368602fe
docs(result): document that failure equality ignores error content
Result/Result<T> equality treats any two failures as equal regardless of their
Error, which was undocumented and surprising for failure-specific branching.
2026-07-12 21:53:26 +02:00
fbbe94bfa8
fix(result): Result<T> hash collision
A success result wrapping a value whose GetHashCode is 0 (e.g. Result<int>
with 0) collides with a failure result, both hashing to 0.
2026-07-12 21:25:21 +02:00
06a40184ee
fix(result): correct wrong namespace in Prelude doc comment
The doc comment referenced `Geekeey.Extensions.Result.Prelude` but the actual
namespace is `Geekeey.Request.Result`, so the suggested using directive would
not compile.
2026-07-12 18:33:32 +02:00
eff887b49f
feat: add json property path supports for object keys
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m4s
default / dotnet-default-workflow (push) Successful in 3m25s
2026-05-30 21:17:14 +02:00
c674de31f7
chore: rename internal types
Some checks failed
default / dotnet-default-workflow (pull_request) Successful in 2m5s
default / dotnet-default-workflow (push) Has been cancelled
Rename internal types in the validation to be more consistent with other
projects
2026-05-30 19:36:28 +02:00
36f1a9eb1b
feat: rename validation builder for parity
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 1m58s
default / dotnet-default-workflow (push) Successful in 1m56s
Rename extensions functions and `IValidatorBuilder` for parity with
dispatcher options and builder.
2026-05-29 23:13:06 +02:00
4d33d5ab4c
feat: hide pipelines internals from stack trace
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m4s
default / dotnet-default-workflow (push) Successful in 1m59s
2026-05-29 23:10:01 +02:00
21b6f04f8c
fix: type cache reset when metadata updates occure
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 3m28s
default / dotnet-default-workflow (push) Successful in 2m10s
2026-05-28 20:39:51 +02:00
22142882b5
feat: add support for validator resolution from dependency injection 2026-05-28 20:12:00 +02:00
d614788e06
feat: create request projects for basic CQRS 2026-05-26 22:24:40 +02:00