All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jasync.sql.db.interceptor.ConnectionInterceptorHelper.kt Maven / Gradle / Ivy

package com.github.jasync.sql.db.interceptor

import com.github.jasync.sql.db.QueryResult
import java.util.concurrent.CompletableFuture
import java.util.function.Supplier

internal fun wrapQueryWithInterceptors(
    query: String,
    interceptors: List>,
    fn: (String) -> CompletableFuture
): CompletableFuture {
    if (interceptors.isEmpty()) {
        return fn(query)
    }
    val resolvedListeners = interceptors.map { it.get() }
    var currentQuery = query
    for (listener in resolvedListeners) {
        currentQuery = listener.interceptQuery(query)

    }

    var currentResult = fn(currentQuery)
    for (listener in resolvedListeners.reversed()) {
        currentResult = listener.interceptQueryComplete(currentResult)
    }
    return currentResult
}

internal fun wrapPreparedStatementWithInterceptors(
    preparedStatementParams: PreparedStatementParams,
    interceptors: List>,
    fn: (PreparedStatementParams) -> CompletableFuture
): CompletableFuture {
    if (interceptors.isEmpty()) {
        return fn(preparedStatementParams)
    }
    val resolvedListeners = interceptors.map { it.get() }
    var currentParams = preparedStatementParams
    for (listener in resolvedListeners) {
        currentParams = listener.interceptPreparedStatement(currentParams)
    }
    var currentResult = fn(currentParams)
    for (listener in resolvedListeners.reversed()) {
        currentResult = listener.interceptPreparedStatementComplete(currentResult)
    }
    return currentResult
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy