我们正在使用双向 json 请求和此算法构建一些同步功能。一切都好,我们让它在原型模式下运行。现在我正在尝试通用化代码,因为我们将同步应用程序中的几个表。能够将一个类定义为“扩展同步”并通过一些专门化/覆盖获得附加属性和同步处理方法会很酷。我已经做到了这一点:
abstract class Synchable [T<:Synchable[T]] (val ruid: String, val lastSyncTime: String, val isDeleted:Int) {
def contentEquals(Target: T): Boolean
def updateWith(target: T)
def insert
def selectSince(clientLastSyncTime: String): List[T]
def findByRuid(ruid: String): Option[T]
implicit val validator: Reads[T]
def process(clientLastSyncTime: String, updateRowList: List[JsObject]) = {
for (syncRow <- updateRowList) {
val validatedSyncRow = syncRow.validate[Synchable]
validatedSyncRow.fold(
valid = { result => // valid row
findByRuid(result.ruid) match { //- do we know about it?
case Some(knownRow) => knownRow.updateWith(result)
case None => result.insert
}
}... invalid, etc
我是 Scala 的新手,我知道我可能遗漏了一些东西 - WIP!
对此方法的任何指示或建议将不胜感激。