
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