KandraSuspendRepository

class KandraSuspendRepository<T : Any>(session: CqlSession, schema: TableSchema, entityClass: KClass<T>, batchEngine: BatchEngine)

Coroutine-friendly repository for performing CRUD operations on a ScyllaDB table.

All write operations delegate to BatchEngine (which wraps blocking driver calls); wrap in withContext(Dispatchers.IO) when needed in production.

Parameters

T

the entity type annotated with @ScyllaTable

Constructors

Link copied to clipboard
constructor(session: CqlSession, schema: TableSchema, entityClass: KClass<T>, batchEngine: BatchEngine)

Functions

Link copied to clipboard
suspend fun <V> append(entity: T, field: KProperty1<T, Collection<V>?>, values: Collection<V>, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun decrement(field: KProperty1<T, Long?>, partitionKeys: Map<String, Any>, by: Long = 1, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun delete(entity: T)
Link copied to clipboard
suspend fun deleteAll(entities: List<T>)
Link copied to clipboard
suspend fun deleteBy(block: QueryContext.() -> Unit)
Link copied to clipboard
suspend fun deleteById(vararg keyValues: Any)
Link copied to clipboard
suspend fun exists(block: QueryContext.() -> Unit): Boolean
Link copied to clipboard
suspend fun find(block: QueryContext.() -> Unit): T?
Link copied to clipboard
suspend fun findActive(): List<T>

Returns all rows not yet soft-deleted. Requires @SoftDelete(markerProperty = "...") on T — throws KandraSchemaException otherwise.

Link copied to clipboard
suspend fun findAll(limit: Int? = null, block: QueryContext.() -> Unit): List<T>
Link copied to clipboard
suspend fun findById(vararg idValues: Any, consistency: KandraConsistency? = null): T?
Link copied to clipboard
suspend fun findPage(pageSize: Int, pageToken: String? = null, block: QueryContext.() -> Unit = {}): KandraPage<T>
Link copied to clipboard
suspend fun increment(field: KProperty1<T, Long?>, partitionKeys: Map<String, Any>, by: Long = 1, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun <K, V> put(entity: T, field: KProperty1<T, Map<K, V>?>, entries: Map<K, V>, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun raw(cql: String, vararg params: Any?): List<Row>
Link copied to clipboard
suspend fun rawQuery(query: KandraRawQuery): List<Row>
Link copied to clipboard
suspend fun <V> remove(entity: T, field: KProperty1<T, Collection<V>?>, values: Collection<V>, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun save(entity: T, ttlSeconds: Int? = null, timestampMicros: Long? = null, consistency: KandraConsistency? = null)
Link copied to clipboard
suspend fun saveAll(entities: List<T>, useBatch: Boolean = true)
Link copied to clipboard
suspend fun saveIfNotExists(entity: T, serialConsistency: KandraConsistency = KandraConsistency.LOCAL_SERIAL): Boolean
Link copied to clipboard
suspend fun saveWithNulls(entity: T, ttlSeconds: Int? = null)
Link copied to clipboard
suspend fun update(old: T, new: T)
Link copied to clipboard
suspend fun updateForce(entity: T)