@@ -7,7 +7,10 @@ import co.statu.rule.database.impl.SchemeVersionDaoImpl
77import co.statu.rule.database.model.SchemeVersion
88import io.vertx.core.Vertx
99import io.vertx.core.json.JsonObject
10+ import io.vertx.jdbcclient.JDBCConnectOptions
1011import io.vertx.jdbcclient.JDBCPool
12+ import io.vertx.sqlclient.Pool
13+ import io.vertx.sqlclient.PoolOptions
1114import org.slf4j.Logger
1215import org.springframework.beans.factory.config.ConfigurableBeanFactory
1316import org.springframework.context.annotation.Scope
@@ -26,7 +29,7 @@ class DatabaseManager(
2629 databasePlugin.pluginBeanContext.getBean(PluginConfigManager ::class .java) as PluginConfigManager <DatabaseConfig >
2730 }
2831
29- private lateinit var pool: JDBCPool
32+ private lateinit var pool: Pool
3033
3134 private val tables = mutableMapOf<ParsekPlugin , MutableList <Dao <* >>>()
3235 private val migrations = mutableMapOf<ParsekPlugin , MutableList <DatabaseMigration >>()
@@ -35,7 +38,7 @@ class DatabaseManager(
3538
3639 fun getTablePrefix (): String = pluginConfigManager.config.prefix
3740
38- fun getConnectionPool (): JDBCPool {
41+ fun getConnectionPool (): Pool {
3942 if (! ::pool.isInitialized) {
4043 val databaseConfig = pluginConfigManager.config
4144
@@ -44,19 +47,23 @@ class DatabaseManager(
4447 val username = databaseConfig.username
4548 val password = databaseConfig.password
4649
47- val config: JsonObject = JsonObject ()
48- .put(" url" , " jdbc:clickhouse:$host /$name " )
49- .put(" driver_class" , " com.clickhouse.jdbc.ClickHouseDriver" )
50- .put(" datasourceName" , " parsek" )
51- .put(" username" , username)
52- .put(" max_pool_size" , 100 )
53-
54- if (password != " " ) {
55- config
56- .put(" password" , password)
50+ try {
51+ Class .forName(" com.clickhouse.jdbc.ClickHouseDriver" )
52+ } catch (e: Exception ) {
53+ logger.error(" Failed to load ClickHouse driver" , e)
5754 }
5855
59- pool = JDBCPool .pool(vertx, config)
56+ val options = JDBCConnectOptions ()
57+ .setJdbcUrl(" jdbc:clickhouse:$host /$name " )
58+ .setUser(username)
59+ .setPassword(password)
60+
61+ val poolOptions = PoolOptions ()
62+ .setShared(true )
63+ .setName(" parsek" )
64+ .setMaxSize(100 )
65+
66+ pool = JDBCPool .pool(vertx, options, poolOptions)
6067 }
6168
6269 try {
@@ -78,7 +85,7 @@ class DatabaseManager(
7885 }
7986 }
8087
81- private suspend fun initSchemeVersion (plugin : ParsekPlugin , jdbcPool : JDBCPool ) {
88+ private suspend fun initSchemeVersion (plugin : ParsekPlugin , jdbcPool : Pool ) {
8289 val lastSchemeVersion = schemeVersionDaoImpl.getLastSchemeVersion(plugin.pluginId, jdbcPool)
8390
8491 val latestMigration = getLatestMigration(plugin)
@@ -110,7 +117,7 @@ class DatabaseManager(
110117 )
111118 }
112119
113- private suspend fun initPluginDB (plugin : ParsekPlugin , jdbcPool : JDBCPool ) {
120+ private suspend fun initPluginDB (plugin : ParsekPlugin , jdbcPool : Pool ) {
114121 initSchemeVersion(plugin, jdbcPool)
115122
116123 initTables(plugin)
@@ -133,7 +140,7 @@ class DatabaseManager(
133140 databaseHelper?.tables?.let { this .tables[plugin]!! .addAll(it) }
134141 databaseHelper?.migrations?.let { this .migrations[plugin]!! .addAll(it) }
135142
136- val jdbcPool: JDBCPool
143+ val jdbcPool: Pool
137144
138145 try {
139146 jdbcPool = getConnectionPool()
@@ -189,7 +196,7 @@ class DatabaseManager(
189196
190197 internal fun getLatestMigration (plugin : ParsekPlugin ) = migrations[plugin]?.maxByOrNull { it.SCHEME_VERSION }
191198
192- suspend fun checkMigration (plugin : ParsekPlugin , jdbcPool : JDBCPool , lastSchemeVersion : SchemeVersion ? ) {
199+ suspend fun checkMigration (plugin : ParsekPlugin , jdbcPool : Pool , lastSchemeVersion : SchemeVersion ? ) {
193200 logger.info(" Checking available database migrations for \" ${plugin.pluginId} \" " )
194201
195202 val databaseVersion = lastSchemeVersion?.version ? : 0
@@ -203,7 +210,7 @@ class DatabaseManager(
203210 migrate(plugin, jdbcPool, databaseVersion)
204211 }
205212
206- private suspend fun updateSchemeVersion (version : Int , info : String , plugin : ParsekPlugin , jdbcPool : JDBCPool ) {
213+ private suspend fun updateSchemeVersion (version : Int , info : String , plugin : ParsekPlugin , jdbcPool : Pool ) {
207214 schemeVersionDaoImpl.add(
208215 SchemeVersion (
209216 pluginId = plugin.pluginId,
@@ -214,7 +221,7 @@ class DatabaseManager(
214221 )
215222 }
216223
217- private suspend fun migrate (plugin : ParsekPlugin , jdbcPool : JDBCPool , databaseVersion : Int ) {
224+ private suspend fun migrate (plugin : ParsekPlugin , jdbcPool : Pool , databaseVersion : Int ) {
218225 migrations[plugin]!!
219226 .find { it.isMigratable(databaseVersion) }
220227 ?.let {
0 commit comments