50. Projection
val readJournal = PersistenceQuery(system)
.readJournalFor[LeveldbReadJournal](LeveldbReadJournal.Identifier)
implicit val mat = ActorMaterializer()(system)
val dao = new ThreadsDao(dbConfig)
val projection = new ThreadProjection(dao)
readJournal
.eventsByTag("Thread", projection.lastOffset)
.mapAsync(1) { envelope =>
projection.update(envelope.event).map(_ => envelope.offset)
}
.mapAsync(1) { offset => projection.saveProgress(offset) }
.runWith(Sink.ignore)