From: TheSaminator Date: Sun, 6 Feb 2022 22:46:40 +0000 (-0500) Subject: A hopeful fix (again) X-Git-Url: https://gitweb.starshipfights.net/?a=commitdiff_plain;h=e83491b70e3d67c7ae75744e18c43f356fd94ba2;p=starship-fights A hopeful fix (again) --- diff --git a/src/jvmMain/kotlin/starshipfights/auth/providers.kt b/src/jvmMain/kotlin/starshipfights/auth/providers.kt index abd3eb7..6251422 100644 --- a/src/jvmMain/kotlin/starshipfights/auth/providers.kt +++ b/src/jvmMain/kotlin/starshipfights/auth/providers.kt @@ -12,9 +12,10 @@ import io.ktor.routing.* import io.ktor.sessions.* import io.ktor.util.* import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.singleOrNull import kotlinx.coroutines.launch import kotlinx.html.* -import org.litote.kmongo.eq import starshipfights.CurrentConfiguration import starshipfights.data.Id import starshipfights.data.admiralty.Admiral @@ -196,7 +197,9 @@ object TestAuthProvider : AuthProvider { val userAgent = request.userAgent() if (userAgent != null && credentials.name.isValidUsername() && credentials.password == TEST_PASSWORD) { sfLogger.info("Attempting to find user ${credentials.name}") - val user = User.locate(User::username eq credentials.name) + // TODO find out why java mongodb driver is such a piece of shit + //val user = User.locate(User::username eq credentials.name) + val user = User.all().filter { it.username == credentials.name }.singleOrNull() ?: User(username = credentials.name).also { sfLogger.info("Attempting to add user with name ${credentials.name}") User.put(it) diff --git a/src/jvmMain/kotlin/starshipfights/data/data_connection.kt b/src/jvmMain/kotlin/starshipfights/data/data_connection.kt index 7cc0abc..b6cf384 100644 --- a/src/jvmMain/kotlin/starshipfights/data/data_connection.kt +++ b/src/jvmMain/kotlin/starshipfights/data/data_connection.kt @@ -1,11 +1,5 @@ package starshipfights.data -import com.mongodb.ConnectionString -import com.mongodb.MongoClientSettings -import com.mongodb.event.CommandFailedEvent -import com.mongodb.event.CommandListener -import com.mongodb.event.CommandStartedEvent -import com.mongodb.event.CommandSucceededEvent import de.flapdoodle.embed.mongo.MongodExecutable import de.flapdoodle.embed.mongo.MongodStarter import de.flapdoodle.embed.mongo.config.MongoCmdOptions @@ -26,7 +20,6 @@ import org.litote.kmongo.serialization.registerSerializer import org.slf4j.Logger import org.slf4j.LoggerFactory import starshipfights.game.MomentSerializer -import starshipfights.sfLogger import java.io.File import java.net.ServerSocket import kotlin.system.exitProcess @@ -101,26 +94,6 @@ object ConnectionHolder { registerSerializer(MomentSerializer) databaseName = db - clientDeferred.complete( - KMongo.createClient( - MongoClientSettings - .builder() - .applyConnectionString(ConnectionString(conn.createUrl())) - .addCommandListener(object : CommandListener { - override fun commandStarted(event: CommandStartedEvent) { - sfLogger.info("Started Mongo command ${event.commandName}") - } - - override fun commandSucceeded(event: CommandSucceededEvent) { - sfLogger.info("Succeeded Mongo command ${event.commandName}") - } - - override fun commandFailed(event: CommandFailedEvent) { - sfLogger.info("Failed Mongo command ${event.commandName}") - } - }) - .build() - ).coroutine - ) + clientDeferred.complete(KMongo.createClient(conn.createUrl()).coroutine) } } diff --git a/src/jvmMain/kotlin/starshipfights/data/data_documents.kt b/src/jvmMain/kotlin/starshipfights/data/data_documents.kt index 096517c..2be671b 100644 --- a/src/jvmMain/kotlin/starshipfights/data/data_documents.kt +++ b/src/jvmMain/kotlin/starshipfights/data/data_documents.kt @@ -43,6 +43,7 @@ interface DocumentTable> { suspend fun put(doc: T) suspend fun get(id: Id): T? suspend fun del(id: Id) + suspend fun all(): Flow suspend fun select(bson: Bson): Flow suspend fun locate(bson: Bson): T? @@ -101,6 +102,10 @@ private class DocumentTableImpl>(val kclass: KClass, priv collection().deleteOneById(id) } + override suspend fun all(): Flow { + return collection().find().toFlow() + } + override suspend fun select(bson: Bson): Flow { return collection().find(bson).toFlow() }