diff --git a/.envrc b/.envrc index dc25ec7..a41f435 100644 --- a/.envrc +++ b/.envrc @@ -1,10 +1 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" -fi - -watch_file flake.nix -watch_file flake.lock -if ! use flake . --no-pure-eval -then - echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 -fi +use flake . --no-pure-eval diff --git a/core/src/lu/foyer/EventSourcing.scala b/core/src/lu/foyer/EventSourcing.scala index bd157af..af4031a 100644 --- a/core/src/lu/foyer/EventSourcing.scala +++ b/core/src/lu/foyer/EventSourcing.scala @@ -1,9 +1,6 @@ package lu.foyer import zio.* -import zio.schema.Schema - -import lu.foyer.auth.UserInfo final case class Entity[T](entityId: String, data: T, version: Long) final case class Event[T](entityId: String, data: T, eventId: String) @@ -12,13 +9,3 @@ trait StateRepository[Data] extends Repository[Entity[Data], String] trait EventRepository[Data] extends Repository[Event[Data], String]: def fetchOne(entityId: String, eventId: String): Task[Option[Event[Data]]] def fetchMany(entityId: String, page: Page): Task[Paged[Event[Data]]] - -trait Reducer[Event, State]: - def fromEmpty: PartialFunction[Event, State] - def fromState: PartialFunction[(State, Event), State] - - def reduce(event: Event): Option[State] = - fromEmpty.lift(event) - - def reduce(state: State, event: Event): Option[State] = - fromState.lift((state, event)) diff --git a/core/src/lu/foyer/Reducer.scala b/core/src/lu/foyer/Reducer.scala new file mode 100644 index 0000000..6d567fd --- /dev/null +++ b/core/src/lu/foyer/Reducer.scala @@ -0,0 +1,11 @@ +package lu.foyer + +trait Reducer[Event, State]: + def fromEmpty: PartialFunction[Event, State] + def fromState: PartialFunction[(State, Event), State] + + def reduce(event: Event): Option[State] = + fromEmpty.lift(event) + + def reduce(state: State, event: Event): Option[State] = + fromState.lift((state, event))