Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
File renamed without changes.
59 changes: 59 additions & 0 deletions .github/workflows/release-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Release ResultR.Validation

on:
push:
tags:
- 'validation-v*'

env:
DOTNET_VERSION: '10.0.x'

permissions:
contents: write

jobs:
release-validation:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ResultR.slnx
working-directory: src

- name: Build
run: dotnet build ResultR.slnx --configuration Release --no-restore
working-directory: src

- name: Test
run: dotnet test ResultR.slnx --configuration Release --no-build --verbosity normal
working-directory: src

- name: Pack ResultR.Validation
run: |
VERSION=${GITHUB_REF#refs/tags/validation-v}
dotnet pack ResultR.Validation.csproj --configuration Release --no-build -p:PackageVersion=$VERSION -o ./nupkg
working-directory: src/ResultR.Validation

- name: Publish ResultR.Validation to NuGet
run: dotnet nuget push ./nupkg/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
working-directory: src/ResultR.Validation

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
src/ResultR.Validation/nupkg/*.nupkg
src/ResultR.Validation/nupkg/*.snupkg
generate_release_notes: true
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,16 @@ ResultR prioritizes:
dotnet add package ResultR
```

### Optional: ResultR.Validation

For inline validation with a fluent API:

```bash
dotnet add package ResultR.Validation
```

**[→ Learn more about ResultR.Validation](https://github.com/AlanBarber/ResultR/wiki/ResultR.Validation)**

## 🚀 Quick Start

### 1. Define a Request
Expand Down Expand Up @@ -199,6 +209,44 @@ public class DeleteUserHandler : IRequestHandler<DeleteUserRequest>

## 🔧 Advanced Features

### ResultR.Validation (Optional Package)

Add fluent inline validation to your handlers without separate validator classes:

```csharp
dotnet add package ResultR.Validation
```

```csharp
using ResultR.Validation;

public class CreateUserHandler : IRequestHandler<CreateUserRequest, User>
{
public ValueTask<Result> ValidateAsync(CreateUserRequest request)
{
return Validator.For(request)
.RuleFor(x => x.Email)
.NotEmpty("Email is required")
.EmailAddress("Invalid email format")
.RuleFor(x => x.Name)
.NotEmpty("Name is required")
.MinLength(2, "Name must be at least 2 characters")
.RuleFor(x => x.Age)
.GreaterThan(0, "Age must be positive")
.ToResult();
}

public async ValueTask<Result<User>> HandleAsync(CreateUserRequest request, CancellationToken ct)
{
var user = new User(request.Email, request.Name, request.Age);
await _repository.AddAsync(user, ct);
return Result<User>.Success(user);
}
}
```

**[→ Full ResultR.Validation documentation](https://github.com/AlanBarber/ResultR/wiki/ResultR.Validation)**

### Metadata Support

```csharp
Expand Down
6 changes: 6 additions & 0 deletions docs/wiki/Home.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ else

## Documentation

### Core Documentation

- [Getting Started](Getting-Started) - Installation and basic setup
- [Requests and Handlers](Requests-and-Handlers) - Creating requests and handlers
- [The Result Type](The-Result-Type) - Working with success and failure states
Expand All @@ -73,6 +75,10 @@ else
- [Error Handling](Error-Handling) - Exception handling and failure patterns
- [Best Practices](Best-Practices) - Recommended patterns and conventions

### Optional Packages

- [ResultR.Validation](ResultR.Validation) - Inline validation with fluent API

## Requirements

- .NET 10.0 or later
Expand Down
Loading