diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt index ba885c8d..cb425a55 100644 --- a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt +++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt @@ -10,18 +10,31 @@ import java.util.UUID class MessageLoggerWrapper( private val databaseFile: File ): MessageLoggerInterface.Stub() { - private lateinit var database: SQLiteDatabase + private var _database: SQLiteDatabase? = null + + private val database get() = synchronized(this) { + _database?.takeIf { it.isOpen } ?: run { + _database?.close() + val openedDatabase = SQLiteDatabase.openDatabase(databaseFile.absolutePath, null, SQLiteDatabase.CREATE_IF_NECESSARY or SQLiteDatabase.OPEN_READWRITE) + SQLiteDatabaseHelper.createTablesFromSchema(openedDatabase, mapOf( + "messages" to listOf( + "id INTEGER PRIMARY KEY", + "conversation_id VARCHAR", + "message_id BIGINT", + "message_data BLOB" + ) + )) + _database = openedDatabase + openedDatabase + } + } + + protected fun finalize() { + _database?.close() + } fun init() { - database = SQLiteDatabase.openDatabase(databaseFile.absolutePath, null, SQLiteDatabase.CREATE_IF_NECESSARY or SQLiteDatabase.OPEN_READWRITE) - SQLiteDatabaseHelper.createTablesFromSchema(database, mapOf( - "messages" to listOf( - "id INTEGER PRIMARY KEY", - "conversation_id VARCHAR", - "message_id BIGINT", - "message_data BLOB" - ) - )) + } override fun getLoggedIds(conversationId: Array, limit: Int): LongArray {