From 78bfec69197e66c68311be1e5551612b040c0643 Mon Sep 17 00:00:00 2001 From: Matte23 Date: Fri, 22 Jan 2021 15:21:30 +0100 Subject: [PATCH] Add database path --do-not-notify parameters to backend --- .../circolapp/backend/JavaDatabase.kt | 8 +++---- .../net/underdesk/circolapp/backend/Server.kt | 18 +++++++++++++- .../circolapp/backend/ServerUtils.kt | 24 +++++++++++-------- .../shared/data/DatabaseDriverFactory.kt | 4 ++-- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/backend/src/main/kotlin/net/underdesk/circolapp/backend/JavaDatabase.kt b/backend/src/main/kotlin/net/underdesk/circolapp/backend/JavaDatabase.kt index ba8cf71..302e95a 100644 --- a/backend/src/main/kotlin/net/underdesk/circolapp/backend/JavaDatabase.kt +++ b/backend/src/main/kotlin/net/underdesk/circolapp/backend/JavaDatabase.kt @@ -27,15 +27,15 @@ object JavaDatabase { @Volatile private var instance: AppDatabase? = null - private fun getInstance(): AppDatabase { + private fun getInstance(path: String): AppDatabase { return instance ?: synchronized(this) { instance ?: AppDatabase( - DatabaseDriverFactory().createDriver() + DatabaseDriverFactory(path).createDriver() ).also { instance = it } } } - fun getDaoInstance(): CircularDao { - return CircularDao(getInstance()) + fun getDaoInstance(path: String): CircularDao { + return CircularDao(getInstance(path)) } } diff --git a/backend/src/main/kotlin/net/underdesk/circolapp/backend/Server.kt b/backend/src/main/kotlin/net/underdesk/circolapp/backend/Server.kt index 423b58e..6d07719 100644 --- a/backend/src/main/kotlin/net/underdesk/circolapp/backend/Server.kt +++ b/backend/src/main/kotlin/net/underdesk/circolapp/backend/Server.kt @@ -28,13 +28,29 @@ const val CHECK_DELAY_MILLIS = 900000L fun main(args: Array) { print("Starting Circolapp Push microservice \n") + + if (args.isEmpty()) { + print("ERROR: Database path not specified! Please specify the database path as a parameter \n") + return + } else { + print("Database path is: " + args[0] + " \n") + } + + var enableNotifications = true + if (args.size >= 2 && args[1] == "--do-not-notify") { + print("Notifications are disabled \n") + enableNotifications = false + } + + print("Initializing Firebase SDK \n") val options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.getApplicationDefault()) .build() FirebaseApp.initializeApp(options) - val serverUtils = ServerUtils() + print("Initializing database and server interfaces \n") + val serverUtils = ServerUtils(args[0], enableNotifications) print("Microservice started! \n") runBlocking { diff --git a/backend/src/main/kotlin/net/underdesk/circolapp/backend/ServerUtils.kt b/backend/src/main/kotlin/net/underdesk/circolapp/backend/ServerUtils.kt index 8dc02db..7cf16ba 100644 --- a/backend/src/main/kotlin/net/underdesk/circolapp/backend/ServerUtils.kt +++ b/backend/src/main/kotlin/net/underdesk/circolapp/backend/ServerUtils.kt @@ -23,10 +23,10 @@ import net.underdesk.circolapp.shared.server.KtorFactory import net.underdesk.circolapp.shared.server.Server import net.underdesk.circolapp.shared.server.ServerAPI -class ServerUtils { +class ServerUtils(databasePath: String, private val enableNotifications: Boolean = true) { private val serverList: MutableList = mutableListOf() private val ktorClient = KtorFactory().createClient() - private val circularDao = JavaDatabase.getDaoInstance() + private val circularDao = JavaDatabase.getDaoInstance(databasePath) init { for (serverId in ServerAPI.Companion.Servers.values()) { @@ -75,14 +75,18 @@ class ServerUtils { if (newCirculars.second >= 0 && newCirculars.first.isNotEmpty()) { for (circular in newCirculars.first) { - PushNotificationUtils.createPushNotification( - circular, - ServerAPI.getServerTopic(server.serverID) - ) - PushNotificationUtils.createPushNotificationiOS( - circular, - ServerAPI.getServerTopic(server.serverID) - ) + if (enableNotifications) { + PushNotificationUtils.createPushNotification( + circular, + ServerAPI.getServerTopic(server.serverID) + ) + PushNotificationUtils.createPushNotificationiOS( + circular, + ServerAPI.getServerTopic(server.serverID) + ) + } else { + print("Skipping notification for circular ${circular.id} of school ${circular.school} \n") + } } } } diff --git a/shared/src/jvmMain/kotlin/net/underdesk/circolapp/shared/data/DatabaseDriverFactory.kt b/shared/src/jvmMain/kotlin/net/underdesk/circolapp/shared/data/DatabaseDriverFactory.kt index 0d641e8..eef7035 100644 --- a/shared/src/jvmMain/kotlin/net/underdesk/circolapp/shared/data/DatabaseDriverFactory.kt +++ b/shared/src/jvmMain/kotlin/net/underdesk/circolapp/shared/data/DatabaseDriverFactory.kt @@ -21,9 +21,9 @@ package net.underdesk.circolapp.shared.data import com.squareup.sqldelight.db.SqlDriver import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver -actual class DatabaseDriverFactory { +actual class DatabaseDriverFactory(private val path: String) { actual fun createDriver(): SqlDriver { - return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY + "circolapp.db") + return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY + path) .also { val currentVer = getVersion(it) if (currentVer == 0) {