Skip to content

Commit 292355c

Browse files
committed
refactor: Use MaxWait also Pagination and other calls
1 parent 63c3b46 commit 292355c

File tree

6 files changed

+33
-39
lines changed

6 files changed

+33
-39
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name" : "mongodb-driver",
33
"organization" : "dev.mongocamp",
4-
"version" : "2.6.8.snapshot",
4+
"version" : "2.6.8",
55
"author" : "[email protected]",
66
"license" : "Apache-2.0",
77
"repository" : {

src/main/scala/dev/mongocamp/driver/mongodb/MongoDAO.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package dev.mongocamp.driver.mongodb
22

33
import better.files.File
4-
import dev.mongocamp.driver.mongodb.bson.{ BsonConverter, DocumentHelper }
5-
import dev.mongocamp.driver.mongodb.database.{ ChangeObserver, CollectionStatus, CompactResult, DatabaseProvider }
4+
import dev.mongocamp.driver.mongodb.bson.{BsonConverter, DocumentHelper}
5+
import dev.mongocamp.driver.mongodb.database.{ChangeObserver, CollectionStatus, CompactResult, DatabaseProvider}
66
import dev.mongocamp.driver.mongodb.operation.Crud
77
import org.bson.json.JsonParseException
88
import org.mongodb.scala.model.Accumulators._
99
import org.mongodb.scala.model.Aggregates._
1010
import org.mongodb.scala.model.Filters._
1111
import org.mongodb.scala.model.Projections
12-
import org.mongodb.scala.{ BulkWriteResult, Document, MongoCollection, Observable, SingleObservable }
12+
import org.mongodb.scala.{BulkWriteResult, Document, MongoCollection, Observable, SingleObservable}
1313

1414
import java.nio.charset.Charset
1515
import java.util.Date
@@ -47,7 +47,7 @@ abstract class MongoDAO[A](provider: DatabaseProvider, collectionName: String)(i
4747
* @return
4848
* List of column names
4949
*/
50-
def columnNames(sampleSize: Int = 0): List[String] = {
50+
def columnNames(sampleSize: Int = 0, maxWait: Int = DefaultMaxWait): List[String] = {
5151
val projectStage = project(Projections.computed("tempArray", equal("$objectToArray", "$$ROOT")))
5252
val unwindStage = unwind("$tempArray")
5353
val groupStage = group("_id", addToSet("keySet", "$tempArray.k"))
@@ -60,7 +60,7 @@ abstract class MongoDAO[A](provider: DatabaseProvider, collectionName: String)(i
6060
}
6161
}
6262

63-
val aggregationResult: Document = Raw.findAggregated(pipeline).result()
63+
val aggregationResult: Document = Raw.findAggregated(pipeline).result(maxWait)
6464
BsonConverter.fromBson(aggregationResult.get("keySet").head).asInstanceOf[List[String]]
6565
}
6666

src/main/scala/dev/mongocamp/driver/mongodb/operation/ObservableIncludes.scala

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package dev.mongocamp.driver.mongodb.operation
22

3-
import java.util.concurrent.TimeUnit
4-
53
import com.typesafe.scalalogging.LazyLogging
64
import org.mongodb.scala._
75

6+
import java.util.concurrent.TimeUnit
87
import scala.concurrent.duration.Duration
9-
import scala.concurrent.{ Await, Future }
8+
import scala.concurrent.{Await, Future}
109

1110
object ObservableIncludes extends ObservableIncludes
1211

@@ -25,17 +24,13 @@ trait ObservableIncludes {
2524

2625
def asFuture(): Future[Seq[C]] = observable.toFuture()
2726

28-
def result(maxWait: Int = DefaultMaxWait): C =
29-
Await.result(observable.head(), Duration(maxWait, TimeUnit.SECONDS))
27+
def result(maxWait: Int = DefaultMaxWait): C = Await.result(observable.head(), Duration(maxWait, TimeUnit.SECONDS))
3028

31-
def results(maxWait: Int = DefaultMaxWait): Seq[C] =
32-
Await.result(asFuture(), Duration(maxWait, TimeUnit.SECONDS))
29+
def results(maxWait: Int = DefaultMaxWait): Seq[C] = Await.result(asFuture(), Duration(maxWait, TimeUnit.SECONDS))
3330

34-
def resultList(maxWait: Int = DefaultMaxWait): List[C] =
35-
Await.result(asFuture(), Duration(maxWait, TimeUnit.SECONDS)).toList
31+
def resultList(maxWait: Int = DefaultMaxWait): List[C] = Await.result(asFuture(), Duration(maxWait, TimeUnit.SECONDS)).toList
3632

37-
def resultOption(maxWait: Int = DefaultMaxWait): Option[C] =
38-
Await.result(observable.headOption(), Duration(maxWait, TimeUnit.SECONDS))
33+
def resultOption(maxWait: Int = DefaultMaxWait): Option[C] = Await.result(observable.headOption(), Duration(maxWait, TimeUnit.SECONDS))
3934

4035
}
4136

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package dev.mongocamp.driver.mongodb.pagination
22

33
import dev.mongocamp.driver.mongodb.exception.MongoCampPaginationException
4-
import dev.mongocamp.driver.mongodb.{ MongoDAO, _ }
4+
import dev.mongocamp.driver.mongodb.{MongoDAO, _}
55
import org.mongodb.scala.bson.conversions.Bson
66

7-
case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map(), sort: Bson = Map(), projection: Bson = Map()) extends MongoPagination[A] {
7+
case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map(), sort: Bson = Map(), projection: Bson = Map(), maxWait: Int = DefaultMaxWait)
8+
extends MongoPagination[A] {
89

910
def paginate(page: Long, rows: Long): PaginationResult[A] = {
1011
val count = countResult
@@ -16,10 +17,10 @@ case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map()
1617
}
1718
val allPages = Math.ceil(count.toDouble / rows).toInt
1819
val skip = (page - 1) * rows
19-
val responseList = dao.find(filter, sort, projection, rows.toInt).skip(skip.toInt).resultList()
20+
val responseList = dao.find(filter, sort, projection, rows.toInt).skip(skip.toInt).resultList(maxWait)
2021
PaginationResult(responseList, PaginationInfo(count, rows, page, allPages))
2122
}
2223

23-
def countResult: Long = dao.count(filter).result()
24+
def countResult: Long = dao.count(filter).result(maxWait)
2425

2526
}

src/main/scala/dev/mongocamp/driver/mongodb/sync/MongoSyncOperation.scala

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package dev.mongocamp.driver.mongodb.sync
22

3-
import java.util.Date
4-
3+
import com.typesafe.scalalogging.LazyLogging
54
import dev.mongocamp.driver.mongodb._
6-
import dev.mongocamp.driver.mongodb.database.{ ConfigHelper, DatabaseProvider }
5+
import dev.mongocamp.driver.mongodb.database.{ConfigHelper, DatabaseProvider}
76
import dev.mongocamp.driver.mongodb.sync.SyncDirection.SyncDirection
87
import dev.mongocamp.driver.mongodb.sync.SyncStrategy.SyncStrategy
9-
import com.typesafe.scalalogging.LazyLogging
108
import org.mongodb.scala.Document
119
import org.mongodb.scala.bson.ObjectId
1210
import org.mongodb.scala.model.Projections._
1311
import org.mongodb.scala.model.Updates._
1412

13+
import java.util.Date
14+
1515
object SyncStrategy extends Enumeration {
1616
type SyncStrategy = Value
1717
val SyncAll = Value
@@ -66,23 +66,24 @@ case class MongoSyncOperation(
6666
left: DatabaseProvider,
6767
right: DatabaseProvider,
6868
countBefore: Int,
69-
documentsToSync: Seq[Document]
69+
documentsToSync: Seq[Document],
70+
maxWait: Int = DefaultMaxWait
7071
): MongoSyncResult = {
7172
val start = System.currentTimeMillis()
7273
val syncDate = new Date()
7374
var filteredDocumentsToSync = Seq[Document]()
7475
if (documentsToSync.nonEmpty) {
7576
val idSet: Set[ObjectId] = documentsToSync.map(doc => doc.getObjectId(idColumnName)).toSet
76-
filteredDocumentsToSync = left.dao(collectionName).find(valueFilter(idColumnName, idSet)).results()
77-
right.dao(collectionName).bulkWriteMany(filteredDocumentsToSync).result()
77+
filteredDocumentsToSync = left.dao(collectionName).find(valueFilter(idColumnName, idSet)).results(maxWait)
78+
right.dao(collectionName).bulkWriteMany(filteredDocumentsToSync).result(maxWait)
7879
val update = combine(
7980
set(MongoSyncOperation.SyncColumnLastSync, syncDate),
8081
set(MongoSyncOperation.SyncColumnLastUpdate, syncDate)
8182
)
82-
left.dao(collectionName).updateMany(Map(), update).result()
83-
right.dao(collectionName).updateMany(Map(), update).result()
83+
left.dao(collectionName).updateMany(Map(), update).result(maxWait)
84+
right.dao(collectionName).updateMany(Map(), update).result(maxWait)
8485
}
85-
val countAfter: Int = right.dao(collectionName).count().result().toInt
86+
val countAfter: Int = right.dao(collectionName).count().result(maxWait).toInt
8687
MongoSyncResult(
8788
collectionName,
8889
syncDate,

src/test/scala/dev/mongocamp/driver/mongodb/gridfs/GridfsDatabaseFunctions.scala

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package dev.mongocamp.driver.mongodb.gridfs
22

33
import better.files.File
44
import dev.mongocamp.driver.MongoImplicits
5-
import dev.mongocamp.driver.mongodb._
65
import dev.mongocamp.driver.mongodb.test.TestDatabase.ImageFilesDAO
76
import org.bson.types.ObjectId
87
import org.mongodb.scala.bson.conversions.Bson
@@ -34,10 +33,7 @@ trait GridfsDatabaseFunctions extends MongoImplicits {
3433
val start = System.currentTimeMillis()
3534
val size: Long = ImageFilesDAO.downloadFileResult(id, file)
3635

37-
println(
38-
"file: %s with size %s Bytes written in %s ms "
39-
.format(file.pathAsString, size, System.currentTimeMillis() - start)
40-
)
36+
println("file: %s with size %s Bytes written in %s ms ".format(file.pathAsString, size, System.currentTimeMillis() - start))
4137

4238
size
4339
}
@@ -48,9 +44,10 @@ trait GridfsDatabaseFunctions extends MongoImplicits {
4844

4945
def findImages(key: String, value: String): List[GridFSFile] = ImageFilesDAO.findByMetadataValue(key, value)
5046

51-
def updateMetadata(oid: ObjectId, value: Any): UpdateResult =
52-
ImageFilesDAO.updateMetadata(oid, value).result()
47+
def updateMetadata(oid: ObjectId, value: Any): UpdateResult = ImageFilesDAO.updateMetadata(oid, value).result()
5348

54-
def updateMetadataElements(filter: Bson, elements: Map[String, Any]): UpdateResult =
49+
def updateMetadataElements(filter: Bson, elements: Map[String, Any]): UpdateResult = {
5550
ImageFilesDAO.updateMetadataElements(filter, elements).result()
51+
}
52+
5653
}

0 commit comments

Comments
 (0)