adbrowne / Eventful

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Eventful

Build status

[<AggregateModule>]
module PersonAggregate = 
    type internal Marker = interface end

    type PersonState = {
        FirstName : string
        LastName : string
    }

    let state = new StateGen<PersonState>((fun s _ -> s), { PersonState.FirstName = ""; LastName = "" }) 

    type CreatePersonCmd = {
        Id : Guid
        FirstName : string
        LastName : string
    }

    [<CommandHandler>]
    let HandleCreatePerson (cmd : CreatePersonCmd, state : PersonState) =
        Handler.Start cmd.Id cmd state
        |> Validate.NonNullProperty "FirstName" cmd.FirstName
        |> Validate.NonNullProperty "LastName" cmd.LastName
        |> Handler.Output 
            {
                PersonCreatedEvt.Id = cmd.Id
                FirstName = cmd.FirstName
                LastName = cmd.LastName
            }

About

License:Apache License 2.0


Languages

Language:F# 91.5%Language:PowerShell 7.0%Language:C# 0.9%Language:GLSL 0.5%Language:Batchfile 0.0%Language:Shell 0.0%