Toto zatím není zveřejněno, ale v hlavní větvi Alpakky, MongoSource.apply
přebírá parametr typu:
object MongoSource {
def apply[T](query: Observable[T]): Source[T, NotUsed] =
Source.fromPublisher(ObservableToPublisher(query))
}
Proto s nadcházející verzí 0.18 Alpakka budete moci provádět následující:
val source: Source[TodoMongo, NotUsed] = MongoSource[TodoMongo](todoCollection.find())
Všimněte si, že source
zde předpokládá, že todoCollection.find()
vrátí Observable[TodoMongo]
; upravte typy podle potřeby.
Mezitím můžete výše uvedený kód jednoduše přidat ručně. Například:
package akka.stream.alpakka.mongodb.scaladsl
import akka.NotUsed
import akka.stream.alpakka.mongodb.ObservableToPublisher
import akka.stream.scaladsl.Source
import org.mongodb.scala.Observable
object MyMongoSource {
def apply[T](query: Observable[T]): Source[T, NotUsed] =
Source.fromPublisher(ObservableToPublisher(query))
}
Všimněte si, že MyMongoSource
je definováno jako umístění v akka.stream.alpakka.mongodb.scaladsl
balíček (jako MongoSource
), protože ObservableToPublisher
je třída typu balíček-soukromá. Použili byste MyMongoSource
stejným způsobem, jako byste použili MongoSource
:
val source: Source[TodoMongo, NotUsed] = MyMongoSource[TodoMongo](todoCollection.find())