From: TheSaminator Date: Sun, 6 Feb 2022 21:56:44 +0000 (-0500) Subject: Try to fix login POST failure X-Git-Url: https://gitweb.starshipfights.net/?a=commitdiff_plain;h=39c1e88a09b98ca4a739909c6ad05644917c33bf;p=starship-fights Try to fix login POST failure --- diff --git a/src/jvmMain/kotlin/starshipfights/data/data_documents.kt b/src/jvmMain/kotlin/starshipfights/data/data_documents.kt index cacfb99..096517c 100644 --- a/src/jvmMain/kotlin/starshipfights/data/data_documents.kt +++ b/src/jvmMain/kotlin/starshipfights/data/data_documents.kt @@ -35,6 +35,8 @@ object DocumentIdController : IdController { } interface DocumentTable> { + fun initialize() + suspend fun index(vararg properties: KProperty1) suspend fun unique(vararg properties: KProperty1) @@ -57,15 +59,17 @@ interface DocumentTable> { logger.error("Caught unhandled exception from initializing $name!", ex) } - fun > create(kclass: KClass, initFunc: suspend DocumentTable.() -> Unit = {}): DocumentTable = DocumentTableImpl(kclass).also { - launch { it.initFunc() } + fun > create(kclass: KClass, initFunc: suspend DocumentTable.() -> Unit = {}): DocumentTable = DocumentTableImpl(kclass) { + runBlocking { + it.initFunc() + } } inline fun > create(noinline initFunc: suspend DocumentTable.() -> Unit = {}) = create(T::class, initFunc) } } -private class DocumentTableImpl>(val kclass: KClass) : DocumentTable { +private class DocumentTableImpl>(val kclass: KClass, private val initFunc: (DocumentTable) -> Unit) : DocumentTable { private var collection: CoroutineCollection? = null suspend fun collection() = collection @@ -73,6 +77,10 @@ private class DocumentTableImpl>(val kclass: KClass) : Do collection = it } + override fun initialize() { + initFunc(this) + } + override suspend fun index(vararg properties: KProperty1) { collection().ensureIndex(*properties) } diff --git a/src/jvmMain/kotlin/starshipfights/data/data_routines.kt b/src/jvmMain/kotlin/starshipfights/data/data_routines.kt index 2f8a1d6..064c6c6 100644 --- a/src/jvmMain/kotlin/starshipfights/data/data_routines.kt +++ b/src/jvmMain/kotlin/starshipfights/data/data_routines.kt @@ -2,6 +2,10 @@ package starshipfights.data import kotlinx.coroutines.* import org.litote.kmongo.lte +import starshipfights.data.admiralty.Admiral +import starshipfights.data.admiralty.BattleRecord +import starshipfights.data.admiralty.ShipInDrydock +import starshipfights.data.auth.User import starshipfights.data.auth.UserSession import starshipfights.sfLogger import kotlin.coroutines.CoroutineContext @@ -12,13 +16,22 @@ object DataRoutines : CoroutineScope { sfLogger.error("Caught unhandled exception in $coroutine", ex) } - fun initializeRoutines() = launch { - launch { - while (currentCoroutineContext().isActive) { - launch { - UserSession.remove(UserSession::expirationMillis lte System.currentTimeMillis()) + fun initializeRoutines(): Job { + // Initialize tables by referring to them + Admiral.initialize() + BattleRecord.initialize() + ShipInDrydock.initialize() + User.initialize() + UserSession.initialize() + + return launch { + launch { + while (currentCoroutineContext().isActive) { + launch { + UserSession.remove(UserSession::expirationMillis lte System.currentTimeMillis()) + } + delay(3600_000) } - delay(3600_000) } } }