diff --git a/mongo/src/main/scala/works/iterative/mongo/MongoJsonRepository.scala b/mongo/src/main/scala/works/iterative/mongo/MongoJsonRepository.scala index dddbb71..aa6de2b 100644 --- a/mongo/src/main/scala/works/iterative/mongo/MongoJsonRepository.scala +++ b/mongo/src/main/scala/works/iterative/mongo/MongoJsonRepository.scala @@ -39,10 +39,9 @@ toFilter: Criteria => Bson, idFilter: Elem => (String, Key) ): - def matching(criteria: Criteria): Task[List[Elem]] = - val filter = toFilter(criteria) - val query = collection.find(filter) - + def performQuery( + query: FindObservable[JsonObject] + ): Task[List[Elem]] = for result <- ZIO.fromFuture(_ => query.toFuture) decoded = result.map(r => r.getJson -> r.getJson.fromJson[Elem]) @@ -59,6 +58,11 @@ .when(failed.nonEmpty) yield elems.to(List) + def matching(criteria: Criteria): Task[List[Elem]] = + val filter = toFilter(criteria) + val query = collection.find(filter) + performQuery(query) + def put(elem: Elem): Task[Unit] = ZIO.async(cb => collection