Implement contracts
This commit is contained in:
parent
31014d1a0c
commit
efdc50eb1d
33 changed files with 879 additions and 173 deletions
26
core/src/lu/foyer/contracts/ContractReducer.scala
Normal file
26
core/src/lu/foyer/contracts/ContractReducer.scala
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package lu.foyer
|
||||
package contracts
|
||||
|
||||
import zio.*
|
||||
|
||||
class ContractReducer() extends Reducer[ContractEvent, ContractState]:
|
||||
|
||||
override val fromEmpty =
|
||||
case e: ContractEvent.Subscribed => ContractState.subscribe(e)
|
||||
|
||||
override val fromState =
|
||||
case (s: ContractState.Actif, e: ContractEvent.Amended) => s.amend(e)
|
||||
case (s: ContractState.Actif, e: ContractEvent.Terminated) => s.terminate(e)
|
||||
|
||||
case (s: ContractState.PendingSubscription, e: ContractEvent.Amended) => s.amend(e)
|
||||
case (s: ContractState.PendingSubscription, e: ContractEvent.Approved) => s.approve(e)
|
||||
case (s: ContractState.PendingSubscription, e: ContractEvent.Rejected) => s.reject(e)
|
||||
case (s: ContractState.PendingSubscription, e: ContractEvent.Terminated) => s.terminate(e)
|
||||
|
||||
case (s: ContractState.PendingAmendment, e: ContractEvent.Amended) => s.amend(e)
|
||||
case (s: ContractState.PendingAmendment, e: ContractEvent.Approved) => s.approve(e)
|
||||
case (s: ContractState.PendingAmendment, e: ContractEvent.Rejected) => s.reject(e)
|
||||
case (s: ContractState.PendingAmendment, e: ContractEvent.Terminated) => s.terminate(e)
|
||||
|
||||
object ContractReducer:
|
||||
val layer: ULayer[Reducer[ContractEvent, ContractState]] = ZLayer.succeed(ContractReducer())
|
||||
Loading…
Add table
Add a link
Reference in a new issue