in core/src/main/scala/org/apache/pekko/persistence/jdbc/snapshot/dao/DefaultSnapshotDao.scala [87:111]
override def snapshotForMaxTimestamp(
persistenceId: String,
maxTimestamp: Long): Future[Option[(SnapshotMetadata, Any)]] =
db.run(queries.selectOneByPersistenceIdAndMaxTimestamp((persistenceId, maxTimestamp)).result).map(zeroOrOneSnapshot)
override def snapshotForMaxSequenceNr(
persistenceId: String,
maxSequenceNr: Long): Future[Option[(SnapshotMetadata, Any)]] =
db.run(queries.selectOneByPersistenceIdAndMaxSequenceNr((persistenceId, maxSequenceNr)).result)
.map(zeroOrOneSnapshot)
override def snapshotForMaxSequenceNrAndMaxTimestamp(
persistenceId: String,
maxSequenceNr: Long,
maxTimestamp: Long): Future[Option[(SnapshotMetadata, Any)]] =
db.run(
queries
.selectOneByPersistenceIdAndMaxSequenceNrAndMaxTimestamp((persistenceId, maxSequenceNr, maxTimestamp))
.result)
.map(zeroOrOneSnapshot(_))
override def save(snapshotMetadata: SnapshotMetadata, snapshot: Any): Future[Unit] = {
val eventualSnapshotRow = Future.fromTry(serializeSnapshot(snapshotMetadata, snapshot))
eventualSnapshotRow.map(queries.insertOrUpdate).flatMap(db.run).map(_ => ())(ExecutionContexts.parasitic)
}