2021-12-26 03:33:23 -05:00
|
|
|
package cloud.kubelet.foundation.gjallarhorn
|
|
|
|
|
|
|
|
import com.github.ajalt.clikt.core.CliktCommand
|
|
|
|
import com.github.ajalt.clikt.parameters.options.default
|
|
|
|
import com.github.ajalt.clikt.parameters.options.option
|
2022-01-07 07:29:04 -05:00
|
|
|
import com.github.ajalt.clikt.parameters.types.int
|
|
|
|
import com.zaxxer.hikari.HikariConfig
|
|
|
|
import com.zaxxer.hikari.HikariDataSource
|
2021-12-26 03:33:23 -05:00
|
|
|
import org.jetbrains.exposed.sql.Database
|
|
|
|
|
|
|
|
class GjallarhornCommand : CliktCommand(invokeWithoutSubcommand = true) {
|
|
|
|
private val jdbcConnectionUrl by option("-c", "--connection-url", help = "JDBC Connection URL")
|
|
|
|
.default("jdbc:postgresql://localhost/foundation")
|
|
|
|
|
|
|
|
private val jdbcConnectionUsername by option("-u", "--connection-username", help = "JDBC Connection Username")
|
|
|
|
.default("jdbc:postgresql://localhost/foundation")
|
|
|
|
|
2022-01-07 06:15:26 -05:00
|
|
|
private val jdbcConnectionPassword by option("-p", "--connection-password", help = "JDBC Connection Password")
|
2021-12-26 03:33:23 -05:00
|
|
|
.default("jdbc:postgresql://localhost/foundation")
|
|
|
|
|
2022-01-07 07:29:04 -05:00
|
|
|
private val dbPoolSize by option("--db-pool-size", help = "JDBC Pool Size").int().default(8)
|
|
|
|
|
2021-12-26 03:33:23 -05:00
|
|
|
override fun run() {
|
2022-01-07 07:29:04 -05:00
|
|
|
val pool = HikariDataSource(HikariConfig().apply {
|
|
|
|
jdbcUrl = jdbcConnectionUrl
|
|
|
|
username = jdbcConnectionUsername
|
|
|
|
password = jdbcConnectionPassword
|
2022-01-07 08:29:41 -05:00
|
|
|
minimumIdle = dbPoolSize / 2
|
2022-01-07 07:29:04 -05:00
|
|
|
maximumPoolSize = dbPoolSize
|
|
|
|
})
|
|
|
|
val db = Database.connect(pool)
|
2021-12-26 03:33:23 -05:00
|
|
|
currentContext.findOrSetObject { db }
|
|
|
|
}
|
|
|
|
}
|