in entity-browser-app/src/main/kotlin/jetbrains/xodus/browser/web/db/StoreService.kt [171:201]
fun updateEntity(id: String, vo: ChangeSummary): EntityView {
transactional { t ->
val entity = getEntity(id, t)
vo.properties.forEach {
val newValue = it.newValue
if (newValue == null) {
entity.deleteProperty(it.name)
} else {
entity.applyValues(newValue)
}
}
vo.links.forEach {
val newValue = it.newValue
val oldValue = it.oldValue
if (it.totallyRemoved) {
entity.deleteLinks(it.name)
} else if (newValue == null) {
if (oldValue != null) {
val linked = getEntityOrStub(oldValue.id, t)
entity.deleteLink(it.name, linked)
}
} else {
val linked = getEntity(newValue.id, t)
entity.addLink(it.name, linked)
}
}
id
}
return getEntity(id)
}