in dnq-transient-store/src/main/kotlin/com/jetbrains/teamsys/dnq/database/TransientSessionImpl.kt [1113:1137]
fun setOneToOne(
e1: TransientEntityImpl,
e1Toe2LinkName: String,
e2Toe1LinkName: String,
e2: TransientEntity?
) {
addChangeAndRun {
val prevE2 = e1.getLink(e1Toe2LinkName) as TransientEntity?
if (prevE2 == null || prevE2 != e1) {
if (prevE2 != null) {
deleteLinkInternal(prevE2, e2Toe1LinkName, e1)
deleteLinkInternal(e1, e1Toe2LinkName, prevE2)
}
if (e2 != null) {
val prevE1 = e2.getLink(e2Toe1LinkName) as TransientEntity?
if (prevE1 != null) {
deleteLinkInternal(prevE1, e1Toe2LinkName, e2)
}
setLinkInternal(e1, e1Toe2LinkName, e2)
setLinkInternal(e2, e2Toe1LinkName, e1)
}
}
true
}
}