in pekko-sample-persistence-dc-scala/src/main/scala/sample/persistence/res/counter/ThumbsUpCounter.scala [37:64]
def apply(replicationId: ReplicationId): Behavior[Command] =
Behaviors.setup { ctx =>
ReplicatedEventSourcing.commonJournalConfig(replicationId, MainApp.AllReplicas, CassandraReadJournal.Identifier) {
replicationContext =>
EventSourcedBehavior[Command, Event, State](
persistenceId = replicationId.persistenceId,
emptyState = State(Set.empty),
commandHandler = (state, cmd) =>
cmd match {
case GiveThumbsUp(_, userId, replyTo) =>
Effect.persist(GaveThumbsUp(userId)).thenRun { state2 =>
ctx.log.info("Thumbs-up by {}, total count {}", userId, state2.users.size)
replyTo ! state2.users.size
}
case GetCount(_, replyTo) =>
replyTo ! state.users.size
Effect.none
case GetUsers(_, replyTo) =>
replyTo ! state
Effect.none
},
eventHandler = (state, event) =>
event match {
case GaveThumbsUp(userId) =>
state.add(userId)
})
}
}