I didn't find a way (documentation and API) to remove old snapshots with Akka Persistence Typed. With the plain API, I used:
override def receiveCommand: Receive = {
case SaveSnapshotSuccess(metadata) =>
deleteSnapshots(SnapshotSelectionCriteria.create(metadata.sequenceNr, metadata.timestamp - 1))
case c: C => {
val snd = sender()
c.validate(persistenceId, state).fold(
error => snd ! Left(error),
event => {
persist(event) { _ =>
state = eventHandler.handle(event)(state)
saveSnapshot(state)
snd ! Right(event)
}
}
)
}
}
But with the new API, I can't find a way.
def behavior(persistenceId: String): Behavior[BoardCommand] = PersistentBehaviors
.receive[BoardCommand, BoardEvent, Option[states.Board]](
persistenceId, None,
(state, cmd)=> {
cmd.validate(persistenceId, state ).fold(
error => {
cmd.replyTo ! Left(error)
Effect.none[BoardEvent, Option[states.Board]]
},
v => {
cmd.replyTo ! Right(v)
Effect.persist(v)
})
},
(state, event)=> BoardEventHandler.handle(event)(state)
).snapshotEvery(1)