Bladeren bron

[FEAT] use interface class by default, mpl is set usimg koin

Adrien Carteron 2 jaren geleden
bovenliggende
commit
d4e633c815

+ 2 - 1
src/main/kotlin/re/chasam/connector/Connector.kt

@@ -1,5 +1,6 @@
 package re.chasam.connector
 
+import org.koin.core.component.KoinComponent
 import re.chasam.models.impl.Player
 
 data class Database (
@@ -10,7 +11,7 @@ data class Database (
     val collection : String,
 )
 
-interface Connector {
+interface Connector : KoinComponent {
     val defaultDatabase: Database
     fun insertOrUpdate(name: String, score: Int = 0, rank : Int = 0)
     fun dropAll()

+ 5 - 1
src/main/kotlin/re/chasam/di/TournamentModule.kt

@@ -1,8 +1,12 @@
 package re.chasam.di
 
 import org.koin.dsl.module
+import re.chasam.connector.Connector
+import re.chasam.connector.impl.Mongo
+import re.chasam.models.Tournament
 import re.chasam.models.impl.TournamentImpl
 
 val tournamentModule = module {
-    single { TournamentImpl() }
+    single<Connector> { Mongo() }
+    single<Tournament> { TournamentImpl() }
 }

+ 3 - 1
src/main/kotlin/re/chasam/models/impl/TournamentImpl.kt

@@ -1,11 +1,13 @@
 package re.chasam.models.impl
 
 import org.koin.core.component.KoinComponent
+import org.koin.core.component.inject
+import re.chasam.connector.Connector
 import re.chasam.connector.impl.Mongo
 import re.chasam.models.Tournament
 
 class TournamentImpl : Tournament, KoinComponent {
-    private var connector = Mongo()
+    private val connector by inject<Connector>()
     override var players: MutableList<Player> = connector.listAll().toMutableList()
 
     init {

+ 2 - 2
src/main/kotlin/re/chasam/routes/PlayersRoutes.kt

@@ -6,12 +6,12 @@ import io.ktor.server.request.*
 import io.ktor.server.response.*
 import io.ktor.server.routing.*
 import org.koin.ktor.ext.inject
-import re.chasam.models.impl.TournamentImpl
+import re.chasam.models.Tournament
 import re.chasam.models.impl.Player
 
 fun Route.playersRouting() {
 
-    val tournamentImpl by inject<TournamentImpl>()
+    val tournamentImpl by inject<Tournament>()
     route("/players") {
         get {
             if (tournamentImpl.players.isNotEmpty()) {