mirror of https://github.com/NekoX-Dev/NekoX.git
61 lines
1.4 KiB
Kotlin
61 lines
1.4 KiB
Kotlin
package tw.nekomimi.nekogram.database
|
|
|
|
import org.dizitart.no2.Nitrite
|
|
import org.telegram.messenger.ApplicationLoader
|
|
import tw.nekomimi.nekogram.utils.FileUtil
|
|
import java.io.File
|
|
|
|
@JvmOverloads
|
|
fun mkDatabase(name: String, delete: Boolean = false): Nitrite {
|
|
|
|
val file = File("${ApplicationLoader.getDataDirFixed()}/databases/$name.db")
|
|
FileUtil.initDir(file.parentFile!!)
|
|
if (delete) {
|
|
file.deleteRecursively()
|
|
}
|
|
|
|
fun create(): Nitrite {
|
|
val nitrite = Nitrite.builder()
|
|
.filePath(file)
|
|
.openOrCreate()!!
|
|
|
|
val test = nitrite.openSharedPreference("shared_preferences")
|
|
test.connection.close()
|
|
|
|
return nitrite
|
|
}
|
|
|
|
runCatching {
|
|
return create()
|
|
}.onFailure {
|
|
file.deleteRecursively()
|
|
}
|
|
|
|
return create()
|
|
|
|
}
|
|
|
|
fun Nitrite.openSharedPreference(name: String) = DbPref(getCollection(name))
|
|
|
|
private lateinit var mainSharedPreferencesDatabase: Nitrite
|
|
|
|
@JvmOverloads
|
|
fun openMainSharedPreference(name: String, delete: Boolean = false): DbPref {
|
|
|
|
if (!::mainSharedPreferencesDatabase.isInitialized || delete) {
|
|
|
|
mainSharedPreferencesDatabase = mkDatabase("shared_preferences", delete)
|
|
|
|
}
|
|
|
|
return try {
|
|
|
|
mainSharedPreferencesDatabase.openSharedPreference(name)
|
|
|
|
} catch (e: IllegalStateException) {
|
|
|
|
openMainSharedPreference(name, true)
|
|
|
|
}
|
|
|
|
} |