return old transactions
This commit is contained in:
@@ -32,8 +32,6 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
api "org.jetbrains.exposed:exposed-core:$exposed_version"
|
||||
api "org.jetbrains.exposed:exposed-jdbc:$exposed_version"
|
||||
|
||||
if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") {
|
||||
api "com.insanusmokrassar:postssystem.utils.repos:$core_version"
|
||||
|
@@ -1,2 +1 @@
|
||||
exposed_version=0.23.1
|
||||
test_sqlite_version=3.28.0
|
||||
|
@@ -3,10 +3,7 @@ package com.insanusmokrassar.postssystem.utils.repos.exposed
|
||||
import com.insanusmokrassar.postssystem.exposed.commons.paginate
|
||||
import com.insanusmokrassar.postssystem.utils.repos.ReadStandardCRUDRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.pagination.*
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.selectAll
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractExposedReadCRUDRepo<ObjectType, IdType>(
|
||||
@@ -17,7 +14,7 @@ abstract class AbstractExposedReadCRUDRepo<ObjectType, IdType>(
|
||||
Table(tableName)
|
||||
{
|
||||
override suspend fun getByPagination(pagination: Pagination): PaginationResult<ObjectType> {
|
||||
return newSuspendedTransaction(db = database) {
|
||||
return transaction(db = database) {
|
||||
selectAll().paginate(pagination).map {
|
||||
it.asObject
|
||||
}.createPaginationResult(
|
||||
@@ -27,14 +24,14 @@ abstract class AbstractExposedReadCRUDRepo<ObjectType, IdType>(
|
||||
}
|
||||
}
|
||||
override suspend fun getById(id: IdType): ObjectType? {
|
||||
return newSuspendedTransaction(db = database) {
|
||||
return transaction(db = database) {
|
||||
select {
|
||||
selectById(id)
|
||||
}.limit(1).firstOrNull() ?.asObject
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun contains(id: IdType): Boolean = newSuspendedTransaction(db = database) {
|
||||
override suspend fun contains(id: IdType): Boolean = transaction(db = database) {
|
||||
select { selectById(id) }.limit(1).any()
|
||||
}
|
||||
}
|
||||
|
@@ -8,7 +8,6 @@ import kotlinx.coroutines.flow.asFlow
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.statements.InsertStatement
|
||||
import org.jetbrains.exposed.sql.statements.UpdateStatement
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||
@@ -42,7 +41,7 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||
|
||||
override suspend fun create(vararg values: InputValueType): List<ObjectType> {
|
||||
onBeforeCreate(*values)
|
||||
return newSuspendedTransaction(db = database) {
|
||||
return transaction(db = database) {
|
||||
values.map { value -> createWithoutNotification(value) }
|
||||
}.also {
|
||||
it.forEach {
|
||||
@@ -83,7 +82,7 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||
override suspend fun update(vararg values: UpdatedValuePair<IdType, InputValueType>): List<ObjectType> {
|
||||
onBeforeUpdate(*values)
|
||||
return (
|
||||
newSuspendedTransaction(db = database) {
|
||||
transaction(db = database) {
|
||||
values.map { (id, value) -> updateWithoutNotification(id, value) }
|
||||
}.filter {
|
||||
it != null
|
||||
@@ -97,7 +96,7 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
||||
protected open suspend fun onBeforeDelete(vararg ids: IdType) {}
|
||||
override suspend fun deleteById(vararg ids: IdType) {
|
||||
onBeforeDelete(*ids)
|
||||
newSuspendedTransaction(db = database) {
|
||||
transaction(db = database) {
|
||||
deleteWhere(null, null) {
|
||||
selectByIds(ids)
|
||||
}
|
||||
|
@@ -1,9 +1,6 @@
|
||||
package com.insanusmokrassar.postssystem.utils.repos.exposed
|
||||
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.Op
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder
|
||||
import org.jetbrains.exposed.sql.*
|
||||
|
||||
interface ExposedCRUDRepo<ObjectType, IdType> {
|
||||
val database: Database
|
||||
|
@@ -1,8 +1,6 @@
|
||||
package com.insanusmokrassar.postssystem.utils.repos.exposed
|
||||
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.SchemaUtils
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
fun Table.initTable(database: Database) {
|
||||
|
@@ -6,7 +6,6 @@ import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.asFlow
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractExposedKeyValueRepo<Key, Value>(
|
||||
@@ -25,7 +24,7 @@ abstract class AbstractExposedKeyValueRepo<Key, Value>(
|
||||
override val onValueRemoved: Flow<Key> = onValueRemovedChannel.asFlow()
|
||||
|
||||
override suspend fun set(k: Key, v: Value) {
|
||||
newSuspendedTransaction(db = database) {
|
||||
transaction(db = database) {
|
||||
if (select { keyColumn.eq(k) }.limit(1).any()) {
|
||||
update({ keyColumn.eq(k) }) {
|
||||
it[valueColumn] = v
|
||||
@@ -41,7 +40,7 @@ abstract class AbstractExposedKeyValueRepo<Key, Value>(
|
||||
}
|
||||
|
||||
override suspend fun unset(k: Key) {
|
||||
newSuspendedTransaction(db = database) {
|
||||
transaction(db = database) {
|
||||
deleteWhere { keyColumn.eq(k) }
|
||||
}
|
||||
onValueRemovedChannel.send(k)
|
||||
|
@@ -4,7 +4,6 @@ import com.insanusmokrassar.postssystem.exposed.commons.paginate
|
||||
import com.insanusmokrassar.postssystem.utils.repos.StandardReadKeyValueRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.pagination.*
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractExposedReadKeyValueRepo<Key, Value>(
|
||||
@@ -14,23 +13,23 @@ abstract class AbstractExposedReadKeyValueRepo<Key, Value>(
|
||||
) : StandardReadKeyValueRepo<Key, Value>, Table() {
|
||||
override val primaryKey: PrimaryKey = PrimaryKey(keyColumn, valueColumn)
|
||||
|
||||
override suspend fun get(k: Key): Value? = newSuspendedTransaction(db = database) {
|
||||
override suspend fun get(k: Key): Value? = transaction(db = database) {
|
||||
select { keyColumn.eq(k) }.limit(1).firstOrNull() ?.getOrNull(valueColumn)
|
||||
}
|
||||
|
||||
override suspend fun contains(key: Key): Boolean = newSuspendedTransaction(db = database) {
|
||||
override suspend fun contains(key: Key): Boolean = transaction(db = database) {
|
||||
select { keyColumn.eq(key) }.limit(1).any()
|
||||
}
|
||||
|
||||
override suspend fun count(): Long = newSuspendedTransaction(db = database) { selectAll().count() }
|
||||
override suspend fun count(): Long = transaction(db = database) { selectAll().count() }
|
||||
|
||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = newSuspendedTransaction(db = database) {
|
||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(db = database) {
|
||||
selectAll().paginate(pagination, keyColumn to if (reversed) SortOrder.DESC else SortOrder.ASC).map {
|
||||
it[keyColumn]
|
||||
}
|
||||
}.createPaginationResult(pagination, count())
|
||||
|
||||
override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = newSuspendedTransaction(db = database) {
|
||||
override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = transaction(db = database) {
|
||||
selectAll().paginate(pagination, keyColumn to if (reversed) SortOrder.DESC else SortOrder.ASC).map {
|
||||
it[valueColumn]
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@ import com.insanusmokrassar.budgetmanager.core.utils.repo.onetomany.AbstractOneT
|
||||
import com.insanusmokrassar.budgetmanager.core.utils.repo.onetomany.ColumnAllocator
|
||||
import com.insanusmokrassar.postssystem.utils.repos.OneToManyKeyValueRepo
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractOneToManyExposedKeyValueRepo<Key, Value>(
|
||||
@@ -17,7 +16,7 @@ abstract class AbstractOneToManyExposedKeyValueRepo<Key, Value>(
|
||||
database
|
||||
) {
|
||||
override suspend fun add(k: Key, v: Value) {
|
||||
newSuspendedTransaction(db = database) {
|
||||
transaction(db = database) {
|
||||
insert {
|
||||
it[keyColumn] = k
|
||||
it[valueColumn] = v
|
||||
@@ -26,10 +25,10 @@ abstract class AbstractOneToManyExposedKeyValueRepo<Key, Value>(
|
||||
}
|
||||
|
||||
override suspend fun remove(k: Key, v: Value) {
|
||||
newSuspendedTransaction(db = database) { deleteWhere { keyColumn.eq(k).and(valueColumn.eq(v)) } }
|
||||
transaction(db = database) { deleteWhere { keyColumn.eq(k).and(valueColumn.eq(v)) } }
|
||||
}
|
||||
|
||||
override suspend fun clear(k: Key) {
|
||||
newSuspendedTransaction(db = database) { deleteWhere { keyColumn.eq(k) } }
|
||||
transaction(db = database) { deleteWhere { keyColumn.eq(k) } }
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@ import com.insanusmokrassar.postssystem.exposed.commons.paginate
|
||||
import com.insanusmokrassar.postssystem.utils.repos.OneToManyReadKeyValueRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.pagination.*
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
typealias ColumnAllocator<T> = Table.() -> Column<T>
|
||||
@@ -17,33 +16,33 @@ abstract class AbstractOneToManyExposedReadKeyValueRepo<Key, Value>(
|
||||
protected val keyColumn: Column<Key> = keyColumnAllocator()
|
||||
protected val valueColumn: Column<Value> = valueColumnAllocator()
|
||||
|
||||
override suspend fun count(k: Key): Long = newSuspendedTransaction(db = database) { select { keyColumn.eq(k) }.count() }
|
||||
override suspend fun count(k: Key): Long = transaction(db = database) { select { keyColumn.eq(k) }.count() }
|
||||
|
||||
override suspend fun count(): Long = newSuspendedTransaction(db = database) { selectAll().count() }
|
||||
override suspend fun count(): Long = transaction(db = database) { selectAll().count() }
|
||||
|
||||
override suspend fun get(
|
||||
k: Key,
|
||||
pagination: Pagination,
|
||||
reversed: Boolean
|
||||
): PaginationResult<Value> = newSuspendedTransaction(db = database) {
|
||||
): PaginationResult<Value> = transaction(db = database) {
|
||||
select { keyColumn.eq(k) }.paginate(pagination, keyColumn, reversed).map { it[valueColumn] }
|
||||
}.createPaginationResult(
|
||||
pagination,
|
||||
count(k)
|
||||
)
|
||||
|
||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = newSuspendedTransaction(db = database) {
|
||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(db = database) {
|
||||
selectAll().paginate(pagination, keyColumn, reversed).map { it[keyColumn] }
|
||||
}.createPaginationResult(
|
||||
pagination,
|
||||
count()
|
||||
)
|
||||
|
||||
override suspend fun contains(k: Key): Boolean = newSuspendedTransaction(db = database) {
|
||||
override suspend fun contains(k: Key): Boolean = transaction(db = database) {
|
||||
select { keyColumn.eq(k) }.limit(1).any()
|
||||
}
|
||||
|
||||
override suspend fun contains(k: Key, v: Value): Boolean = newSuspendedTransaction(db = database) {
|
||||
override suspend fun contains(k: Key, v: Value): Boolean = transaction(db = database) {
|
||||
select { keyColumn.eq(k).and(valueColumn.eq(v)) }.limit(1).any()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user