File tree Expand file tree Collapse file tree 5 files changed +17
-14
lines changed
core/src/main/kotlin/internal/data Expand file tree Collapse file tree 5 files changed +17
-14
lines changed Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ import ru.endlesscode.inventory.internal.data.sql.InventoryDao
2828import ru.endlesscode.inventory.internal.data.sql.entity.toDomain
2929import ru.endlesscode.inventory.internal.data.sql.entity.toSqlEntity
3030import ru.endlesscode.inventory.internal.di.DI
31+ import ru.endlesscode.inventory.internal.util.Log
3132import java.util.*
3233
3334internal class InventoriesRepository (
@@ -55,7 +56,12 @@ internal class InventoriesRepository(
5556
5657 fun loadInventories (player : Player ) {
5758 scheduler.runAsync {
58- val holderInventories = dao.getInventories(player.uniqueId).asSequence()
59+ val holderInventories = dao.getInventories(player.uniqueId)
60+ .getOrElse { exception ->
61+ Log .e(" Error on loading inventories of player ${player.name} " , exception)
62+ return @runAsync
63+ }
64+ .asSequence()
5965 .map { it.toDomain(getLayout(it.layout), player) }
6066 .associateBy { it.id }
6167
Original file line number Diff line number Diff line change @@ -45,7 +45,7 @@ internal abstract class BaseDao(private var dataSource: DataSource) {
4545 }
4646 }
4747
48- protected inline fun <T > statement (sql : String , crossinline block : PreparedStatement .() -> T ): T {
48+ protected inline fun <T > statement (sql : String , crossinline block : PreparedStatement .() -> T ): Result < T > {
4949 return dataSource.statement(sql.trimIndent(), block)
5050 }
5151
Original file line number Diff line number Diff line change @@ -74,7 +74,7 @@ internal class InventoryDao(dataSource: DataSource) : BaseDao(dataSource) {
7474 }
7575 }
7676
77- fun getInventories (holderId : UUID ): List <InventorySqlEntity > {
77+ fun getInventories (holderId : UUID ): Result < List <InventorySqlEntity > > {
7878 return statement(
7979 """
8080 SELECT $INVENTORIES .*
Original file line number Diff line number Diff line change @@ -22,14 +22,16 @@ package ru.endlesscode.inventory.internal.data.sql
2222import java.sql.Connection
2323import java.sql.PreparedStatement
2424import java.sql.ResultSet
25+ import java.sql.SQLException
2526import javax.sql.DataSource
2627
27- internal inline fun <T > DataSource.statement (sql : String , block : PreparedStatement .() -> T ): T {
28+ internal inline fun <T > DataSource.statement (sql : String , block : PreparedStatement .() -> T ): Result < T > {
2829 return connection.use { it.statement(sql, block) }
2930}
3031
31- internal inline fun <T > Connection.statement (sql : String , block : PreparedStatement .() -> T ): T {
32- return prepareStatement(sql).use(block)
32+ internal inline fun <T > Connection.statement (sql : String , block : PreparedStatement .() -> T ): Result <T > {
33+ return runCatching { prepareStatement(sql).use(block) }
34+ .onFailure { exception -> if (exception !is SQLException ) throw exception }
3335}
3436
3537internal fun ResultSet.asSequence (): Sequence <ResultSet > = sequence {
Original file line number Diff line number Diff line change 1919
2020package ru.endlesscode.inventory.internal.data.sql
2121
22- import java.sql.SQLException
2322import javax.sql.DataSource
2423
2524// language=SQL
@@ -38,13 +37,9 @@ internal class MainTableDao(dataSource: DataSource) : BaseDao(dataSource) {
3837 LIMIT 1;
3938 """
4039 ) {
41- try {
42- val resultSet = executeQuery()
43- if (resultSet.next()) resultSet.getInt(COLUMN_VERSION ) else - 1
44- } catch (_: SQLException ) {
45- - 1
46- }
47- }
40+ val resultSet = executeQuery()
41+ if (resultSet.next()) resultSet.getInt(COLUMN_VERSION ) else - 1
42+ }.getOrElse { - 1 }
4843 }
4944
5045 private companion object {
You can’t perform that action at this time.
0 commit comments