70c2f97976
* Use SQLDelight in Backup/Restore
* Use CoroutineWorker
(cherry picked from commit fd5da2de3a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupCategory.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
# app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt
# app/src/main/sqldelight/data/categories.sq
# app/src/main/sqldelight/data/chapters.sq
45 lines
1.6 KiB
Kotlin
45 lines
1.6 KiB
Kotlin
package eu.kanade.data
|
|
|
|
import com.squareup.sqldelight.ColumnAdapter
|
|
import java.util.Date
|
|
|
|
val dateAdapter = object : ColumnAdapter<Date, Long> {
|
|
override fun decode(databaseValue: Long): Date = Date(databaseValue)
|
|
override fun encode(value: Date): Long = value.time
|
|
}
|
|
|
|
private const val listOfStringsSeparator = ", "
|
|
val listOfStringsAdapter = object : ColumnAdapter<List<String>, String> {
|
|
override fun decode(databaseValue: String) =
|
|
if (databaseValue.isEmpty()) {
|
|
listOf()
|
|
} else {
|
|
databaseValue.split(listOfStringsSeparator)
|
|
}
|
|
override fun encode(value: List<String>) = value.joinToString(separator = listOfStringsSeparator)
|
|
}
|
|
|
|
// SY -->
|
|
private const val listOfStringsAndSeparator = " & "
|
|
val listOfStringsAndAdapter = object : ColumnAdapter<List<String>, String> {
|
|
override fun decode(databaseValue: String) =
|
|
if (databaseValue.isEmpty()) {
|
|
emptyList()
|
|
} else {
|
|
databaseValue.split(listOfStringsAndSeparator)
|
|
}
|
|
override fun encode(value: List<String>) = value.joinToString(separator = listOfStringsAndSeparator)
|
|
}
|
|
|
|
private const val listOfLongsSeparator = "/"
|
|
val listOfLongsAdapter = object : ColumnAdapter<List<Long>, String> {
|
|
override fun decode(databaseValue: String) =
|
|
if (databaseValue.isEmpty()) {
|
|
emptyList()
|
|
} else {
|
|
databaseValue.split(listOfLongsSeparator).mapNotNull { it.toLongOrNull() }
|
|
}
|
|
override fun encode(value: List<Long>) = value.joinToString(separator = listOfLongsSeparator)
|
|
}
|
|
// SY <--
|