Compare commits

..

19 Commits

Author SHA1 Message Date
40c4ae128f update dependencies 2022-10-01 03:00:29 +06:00
0f59009300 start 2.3.4 2022-10-01 00:32:21 +06:00
a273f1117f Merge pull request #47 from InsanusMokrassar/2.3.3
2.3.3
2022-09-19 20:44:51 +06:00
c8bb5e1195 Update CHANGELOG.md 2022-09-19 16:08:11 +06:00
fbd98d67a9 Update libs.versions.toml 2022-09-19 16:06:00 +06:00
2350555fbb start 2.3.3 2022-09-19 16:04:44 +06:00
4130f98caa Merge pull request #46 from InsanusMokrassar/2.3.2
2.3.2
2022-09-15 20:12:43 +06:00
f8161c34a7 update dependencies 2022-09-15 20:07:23 +06:00
6fe333e437 start 2.3.2 2022-09-15 20:05:31 +06:00
5806fa1c31 Merge pull request #45 from InsanusMokrassar/2.3.1
2.3.1
2022-09-09 13:44:37 +06:00
2ff712327f Update CHANGELOG.md 2022-09-09 04:22:56 +06:00
72e8e35e3f Update libs.versions.toml 2022-09-09 04:20:09 +06:00
030f9546f2 Update gradle.properties 2022-09-09 04:18:05 +06:00
1b3c479766 Merge pull request #44 from InsanusMokrassar/2.3.0
2.3.0
2022-09-04 16:10:09 +06:00
dcfb66ef6c fixes 2022-09-04 15:57:40 +06:00
763718716d improve reconnect feature 2022-09-04 15:07:30 +06:00
dfbc7be6f2 add option waitForConnection in database config 2022-09-04 14:37:44 +06:00
ab0578b312 start 2.3.0 2022-09-04 14:31:46 +06:00
7b502e073d Merge pull request #43 from InsanusMokrassar/2.2.0
2.2.0
2022-08-27 13:47:59 +06:00
6 changed files with 74 additions and 17 deletions

View File

@@ -1,5 +1,37 @@
# Changelog
## 2.3.4
* `Versions`:
* `tgbotapi`: `3.2.7`
* `microutils`: `0.12.16`
## 2.3.3
* `Versions`:
* `tgbotapi`: `3.2.6`
* `sqlite`: `3.39.3.0`
## 2.3.2
* `Versions`:
* `tgbotapi`: `3.2.3`
* `microutils`: `0.12.13`
* `kslog`: `0.5.2`
## 2.3.1
* `Versions`:
* `klock`: `3.1.0`
* `tgbotapi`: `3.2.1`
* `microutils`: `0.12.11`
* `ktor`: `2.1.1`
## 2.3.0
* `Bot`:
* Add option `reconnectOptions` in database config
## 2.2.0
* `Versions`:

View File

@@ -0,0 +1,9 @@
package dev.inmo.plagubot.config
import kotlinx.serialization.Serializable
@Serializable
data class DBConnectOptions(
val attempts: Int = 3,
val delay: Long = 1000L
)

View File

@@ -1,11 +1,15 @@
package dev.inmo.plagubot.config
import dev.inmo.kslog.common.e
import dev.inmo.kslog.common.logger
import kotlinx.coroutines.delay
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.transactions.transactionManager
import org.koin.core.scope.Scope
import org.sqlite.JDBC
import java.lang.Exception
import java.sql.Connection
inline val Scope.database: Database?
@@ -16,15 +20,24 @@ data class DatabaseConfig(
val url: String = "jdbc:sqlite:file:test?mode=memory&cache=shared",
val driver: String = JDBC::class.qualifiedName!!,
val username: String = "",
val password: String = ""
val password: String = "",
val reconnectOptions: DBConnectOptions? = DBConnectOptions()
) {
@Transient
val database: Database = Database.connect(
url,
driver,
username,
password
).also {
it.transactionManager.defaultIsolationLevel = Connection.TRANSACTION_SERIALIZABLE // Or Connection.TRANSACTION_READ_UNCOMMITTED
}
val database: Database = (0 until (reconnectOptions ?.attempts ?: 1)).firstNotNullOfOrNull {
runCatching {
Database.connect(
url,
driver,
username,
password
).also {
it.transactionManager.defaultIsolationLevel = Connection.TRANSACTION_SERIALIZABLE // Or Connection.TRANSACTION_READ_UNCOMMITTED
it.connector().close()
}
}.onFailure {
logger.e(it)
Thread.sleep(reconnectOptions ?.delay ?: return@onFailure)
}.getOrNull()
} ?: error("Unable to create database")
}

View File

@@ -5,4 +5,4 @@ kotlin.js.generate.externals=true
kotlin.incremental=true
group=dev.inmo
version=2.2.0
version=2.3.4

View File

@@ -4,19 +4,19 @@ kt = "1.7.10"
kt-serialization = "1.4.0"
kt-coroutines = "1.6.4"
microutils = "0.12.4"
tgbotapi = "3.2.0"
kslog = "0.5.1"
microutils = "0.12.16"
tgbotapi = "3.2.7"
kslog = "0.5.2"
jb-exposed = "0.39.2"
jb-dokka = "1.7.10"
sqlite = "3.36.0.3"
sqlite = "3.39.3.0"
klock = "3.0.0"
klock = "3.1.0"
uuid = "0.5.0"
ktor = "2.1.0"
ktor = "2.1.1"
gh-release = "2.4.1"

View File

@@ -4,7 +4,10 @@
"driver": "org.sqlite.JDBC",
"username": "OPTIONAL username",
"password": "OPTIONAL password",
"initAutomatically": false
"reconnectOptions": {
"attempts": 3,
"delay": 1000
}
},
"botToken": "1234567890:ABCDEFGHIJKLMNOP_qrstuvwxyz12345678",
"plugins": [