Skip to content

Commit edd2fac

Browse files
committed
MongoSync
1 parent 824b99b commit edd2fac

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/main/scala/com/sfxcode/nosql/mongo/sync/MongoSyncOperation.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.mongodb.scala.model.Updates._
1414

1515
object SyncStrategy extends Enumeration {
1616
type SyncStrategy = Value
17-
val Replcace = Value
17+
val SyncAll = Value
1818
}
1919

2020
object SyncDirection extends Enumeration {
@@ -27,7 +27,7 @@ case class MongoSyncException(message: String) extends Exception(message)
2727
case class MongoSyncOperation(
2828
collectionName: String,
2929
syncDirection: SyncDirection = SyncDirection.SourceToTarget,
30-
syncStrategy: SyncStrategy = SyncStrategy.Replcace,
30+
syncStrategy: SyncStrategy = SyncStrategy.SyncAll,
3131
idColumnName: String = DatabaseProvider.ObjectIdKey
3232
) extends LazyLogging
3333
with Filter {
@@ -69,12 +69,12 @@ case class MongoSyncOperation(
6969
left: DatabaseProvider,
7070
right: DatabaseProvider,
7171
countBefore: Int,
72-
diff: Seq[Document]
72+
documentsToSync: Seq[Document]
7373
): MongoSyncResult = {
7474
val start = System.currentTimeMillis()
7575
val syncDate = new Date()
76-
if (diff.nonEmpty) {
77-
val idSet: Set[ObjectId] = diff.map(doc => doc.getObjectId(idColumnName)).toSet
76+
if (documentsToSync.nonEmpty) {
77+
val idSet: Set[ObjectId] = documentsToSync.map(doc => doc.getObjectId(idColumnName)).toSet
7878
val documentsToSync: Seq[Document] = left.dao(collectionName).find(valueFilter(idColumnName, idSet)).results()
7979
right.dao(collectionName).bulkWriteMany(documentsToSync).result()
8080
val update = combine(
@@ -89,7 +89,7 @@ case class MongoSyncOperation(
8989
collectionName,
9090
syncDate,
9191
true,
92-
diff.size,
92+
documentsToSync.size,
9393
countBefore,
9494
countAfter,
9595
(System.currentTimeMillis() - start)

src/main/scala/com/sfxcode/nosql/mongo/sync/MongoSyncer.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@ import org.mongodb.scala.bson.codecs.Macros._
77

88
import scala.collection.mutable
99

10-
case class MongoSyncer(sourceConfig: MongoConfig, targetConfig: MongoConfig) {
11-
private val registry = fromProviders(classOf[MongoSyncResult])
10+
case class MongoSyncer(
11+
sourceConfig: MongoConfig,
12+
targetConfig: MongoConfig,
13+
syncOperations: List[MongoSyncOperation] = List()
14+
) {
15+
private val registry = fromProviders(classOf[MongoSyncResult])
16+
private val operationMap = new mutable.HashMap[String, MongoSyncOperation]()
1217

1318
val source: DatabaseProvider = DatabaseProvider(sourceConfig, registry)
1419
val target: DatabaseProvider = DatabaseProvider(targetConfig)
@@ -17,7 +22,7 @@ case class MongoSyncer(sourceConfig: MongoConfig, targetConfig: MongoConfig) {
1722

1823
var terminated = false
1924

20-
private val operationMap = new mutable.HashMap[String, MongoSyncOperation]()
25+
syncOperations.foreach(operation => addOperation(operation))
2126

2227
def addOperation(operation: MongoSyncOperation): Option[MongoSyncOperation] =
2328
operationMap.put(operation.collectionName, operation)

0 commit comments

Comments
 (0)