in dnq-transient-store/src/main/kotlin/com/jetbrains/teamsys/dnq/database/ConstraintsUtil.kt [153:184]
fun processOnDeleteConstraints(
session: TransientStoreSession,
entity: TransientEntity,
entityMetaData: EntityMetaData,
modelMetaData: ModelMetaData,
callDestructorsPhase: Boolean,
processed: MutableSet<Entity>) {
// outgoing associations
entityMetaData.associationEndsMetaData
.asSequence()
.filter { it.cascadeDelete || it.clearOnDelete }
.forEach { associationEndMetaData ->
if (associationEndMetaData.cascadeDelete) {
logger.debug { "Cascade delete targets for link [$entity].${associationEndMetaData.name}" }
}
if (associationEndMetaData.clearOnDelete) {
logger.debug { "Clear associations with targets for link [$entity].${associationEndMetaData.name}" }
}
processOnSourceDeleteConstrains(entity, associationEndMetaData, callDestructorsPhase, processed)
}
// incoming associations
entityMetaData.getIncomingAssociations(modelMetaData)
.asSequence()
.flatMap { (oppositeType, linkNames) ->
linkNames.asSequence().map { linkName -> oppositeType to linkName }
}
.forEach { (oppositeType, linkName) ->
processOnTargetDeleteConstraints(entity, modelMetaData, oppositeType, linkName, session, callDestructorsPhase, processed)
}
}