fun processOnDeleteConstraints()

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)
                }
    }