summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt43
1 files changed, 0 insertions, 43 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt b/src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt
deleted file mode 100644
index e798df9..0000000
--- a/src/main/kotlin/io/dico/parcels2/storage/StorageFactory.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package io.dico.parcels2.storage
-
-import com.zaxxer.hikari.HikariDataSource
-import io.dico.parcels2.DataConnectionOptions
-import io.dico.parcels2.storage.exposed.ExposedBacking
-import kotlin.reflect.KClass
-
-interface StorageFactory {
- companion object StorageFactories {
- private val map: MutableMap<String, StorageFactory> = HashMap()
-
- fun registerFactory(dialect: String, generator: StorageFactory): Boolean = map.putIfAbsent(dialect.toLowerCase(), generator) == null
-
- fun getFactory(dialect: String): StorageFactory? = map[dialect.toLowerCase()]
-
- init {
- // have to write the code like this in kotlin.
- // This code is absolutely disgusting
- ConnectionStorageFactory().register(this)
- }
- }
-
- val optionsClass: KClass<out Any>
-
- fun newStorageInstance(dialect: String, options: Any): Storage
-
-}
-
-class ConnectionStorageFactory : StorageFactory {
- override val optionsClass = DataConnectionOptions::class
- private val types: List<String> = listOf("postgresql", "mariadb")
-
- fun register(companion: StorageFactory.StorageFactories) {
- types.forEach { companion.registerFactory(it, this) }
- }
-
- override fun newStorageInstance(dialect: String, options: Any): Storage {
- val hikariConfig = getHikariConfig(dialect, options as DataConnectionOptions)
- val dataSourceFactory = suspend { HikariDataSource(hikariConfig) }
- return StorageWithCoroutineBacking(ExposedBacking(dataSourceFactory))
- }
-
-}