in core/src/main/scala/org/apache/pekko/persistence/jdbc/query/dao/legacy/ReadJournalQueries.scala [36:70]
private def baseTableQuery() =
JournalTable.filter(_.deleted === false)
private def _allPersistenceIdsDistinct(max: ConstColumn[Long]): Query[Rep[String], String, Seq] =
baseTableQuery().map(_.persistenceId).distinct.take(max)
private def _lastPersistenceIdSequenceNumberQuery(persistenceId: Rep[String]) =
baseTableQuery()
.filter(_.persistenceId === persistenceId)
.map(_.sequenceNumber)
.max
private def _messagesQuery(
persistenceId: Rep[String],
fromSequenceNr: Rep[Long],
toSequenceNr: Rep[Long],
max: ConstColumn[Long]) =
baseTableQuery()
.filter(_.persistenceId === persistenceId)
.filter(_.sequenceNumber >= fromSequenceNr)
.filter(_.sequenceNumber <= toSequenceNr) // TODO perf: optimized this avoid large offset query.
.sortBy(_.sequenceNumber.asc)
.take(max)
private def _eventsByTag(
tag: Rep[String],
offset: ConstColumn[Long],
maxOffset: ConstColumn[Long],
max: ConstColumn[Long]) = {
baseTableQuery()
.filter(_.tags.like(tag))
.sortBy(_.ordering.asc)
.filter(row => row.ordering > offset && row.ordering <= maxOffset)
.take(max)
}