StreamWave 0.1.1

dotnet add package StreamWave --version 0.1.1                
NuGet\Install-Package StreamWave -Version 0.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StreamWave" Version="0.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StreamWave --version 0.1.1                
#r "nuget: StreamWave, 0.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StreamWave as a Cake Addin
#addin nuget:?package=StreamWave&version=0.1.1

// Install StreamWave as a Cake Tool
#tool nuget:?package=StreamWave&version=0.1.1                

StreamWave AggregateRoot

Github Release GitHub Actions Workflow Status GitHub License Github Issues Open Github Pull Request Open Scheduled Code Security Testing

An aggregate root designed for a streaming environment, addressing the dual write problem by decoupling the domain model from the event stream.

Alt text

Table of Contents

Features

  • Easy integration

Installation

To install the package, use the following command in your .NET Core project:

dotnet add package StreamWave

Alternatively, you can add it manually to your .csproj file:

<PackageReference Include="StreamWave" Version="0.1.0" />

Usage

Here are some basic examples of how to use the library:

Setup

Create your domain objects

// domain.cs

public class TestState 
{
    public required Guid Id { get; set; }
    public string? Test { get; set; }
}

Add the aggregate to the service collection

// program.cs

using StreamWave;
using StreamWave.EntityFramework;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAggregate<TestState, Guid>((id) => new TestState() {  Id = id })
            .WithEntityFramework<TestContext, TestState, Guid>()
            .WithApplier<TestEvent>((s, e) =>
            {
                s.Test = e.Field;
                return s;
            });

Use


public async Task HandleAsync(IAggregateManager<TestState, Guid> manager, Guid id)
{
    var aggregate = manager.LoadAsync(id);

    aggregate.Apply(new TestEvent("Update"));

    await manager.SaveAsync(aggregate);
}

Configuration

[TODO]

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue if you encounter any bugs or have feature requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on StreamWave:

Package Downloads
StreamWave.EntityFramework

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.1 135 8/24/2024
0.1.0 123 8/23/2024
0.0.1 78 7/29/2024