![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.harmony.kotlin.data.datasource.DataSourceQueryMapper.kt Maven / Gradle / Ivy
package com.harmony.kotlin.data.datasource
import com.harmony.kotlin.data.mapper.Mapper
import com.harmony.kotlin.data.query.Query
/**
* This data source uses mappers to map queries and redirects them to the contained data source, acting as a simple "translator".
*
* @param getDataSource Data source with get operations
* @param putDataSource Data source with put operations
* @param deleteDataSource Data source with delete operations
* @param getQueryMapper Mapper for get operations
* @param putQueryMapper Mapper for put operations
* @param deleteQueryMapper Mapper for delete operations
*/
@Suppress("UNCHECKED_CAST")
class DataSourceQueryMapper(
private val getDataSource: GetDataSource,
private val putDataSource: PutDataSource,
private val deleteDataSource: DeleteDataSource,
private val getQueryMapper: Mapper,
private val putQueryMapper: Mapper,
private val deleteQueryMapper: Mapper
) : GetDataSource, PutDataSource, DeleteDataSource {
override suspend fun get(query: Query): V {
val queryOut = getQueryMapper.map(query as GetQueryIn)
return getDataSource.get(queryOut)
}
@Deprecated("Use get instead")
override suspend fun getAll(query: Query): List {
val queryOut = getQueryMapper.map(query as GetQueryIn)
return getDataSource.getAll(queryOut)
}
override suspend fun put(query: Query, value: V?): V {
val queryOut = putQueryMapper.map(query as PutQueryIn)
return putDataSource.put(queryOut, value)
}
@Deprecated("Use put instead")
override suspend fun putAll(query: Query, value: List?): List {
val queryOut = putQueryMapper.map(query as PutQueryIn)
return putDataSource.putAll(queryOut, value)
}
override suspend fun delete(query: Query) {
val queryOut = deleteQueryMapper.map(query as DeleteQueryIn)
return deleteDataSource.delete(queryOut)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy