Skip to content

iwasdavid/FSharp.EventStore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

FSharp.EventStore

An F# library for using EventStore: https://eventstore.org/

Writing an Event:

let eventData = {...}//Json
let metaData = {...}//Json

let eventId = writeEventOfType "OrderPlaced"
              |> toStream "Man-Utd-Season-Ticket"
              |> withEventData eventData
              |> andMetaData metaData

printfn "Event created with Id: %A" eventId

Read Events from Stream

let slice = readForwardAndGet 10
            |> eventsFromStream "Man-Utd-Season-Ticket"
            |> startingAtEvent 765

    
slice.Events |> Array.iter (fun e -> printfn "Original event: %A" (Encoding.UTF8.GetString(e.Event.Metadata)))

Persistent Subscriptions

let processEvent (subscriptionBase:EventStorePersistentSubscriptionBase) (resolvedEvent:ResolvedEvent) =
    // Handle event appearing for example:
    printfn "Event meta data is: %s" (Encoding.UTF8.GetString(resolvedEvent.Event.Metadata))
    subscriptionBase.Acknowledge(resolvedEvent)

let handleDrop (subscriptionBase:EventStorePersistentSubscriptionBase) (reason:SubscriptionDropReason) (e:exn) =
    // Handle drop logic, i.e:
    reconnectToPersistentSubscription()

connectToPersistentSubscriptionStream "Man-Utd-Season-Ticket"
|> andGroupName "ManchesterUnited"
|> whenEventAppears processEvent
|> ifSubscriptionDrops handleDrop

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages