mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Update: Make Release, Repository, Product(entity) and ProductPreference K-serializable
This commit is contained in:
parent
d547385cc2
commit
0487982784
@ -6,9 +6,14 @@ import com.fasterxml.jackson.core.JsonGenerator
|
||||
import com.fasterxml.jackson.core.JsonParser
|
||||
import com.fasterxml.jackson.core.JsonToken
|
||||
import com.looker.droidify.utility.extension.json.*
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
// TODO make a Room entity
|
||||
@Entity(primaryKeys = ["packageName", "versionCode", "signature"])
|
||||
@Serializable
|
||||
data class Release(
|
||||
val packageName: String,
|
||||
val selected: Boolean,
|
||||
@ -35,11 +40,25 @@ data class Release(
|
||||
val platforms: List<String>,
|
||||
val incompatibilities: List<Incompatibility>,
|
||||
) {
|
||||
@Serializable
|
||||
sealed class Incompatibility {
|
||||
@Serializable
|
||||
object MinSdk : Incompatibility()
|
||||
|
||||
@Serializable
|
||||
object MaxSdk : Incompatibility()
|
||||
|
||||
@Serializable
|
||||
object Platform : Incompatibility()
|
||||
|
||||
@Serializable
|
||||
data class Feature(val feature: String) : Incompatibility()
|
||||
|
||||
fun toJSON() = Json.encodeToString(this)
|
||||
|
||||
companion object {
|
||||
fun fromJson(json: String) = Json.decodeFromString<Incompatibility>(json)
|
||||
}
|
||||
}
|
||||
|
||||
val identifier: String
|
||||
@ -81,6 +100,7 @@ data class Release(
|
||||
incompatibilities.forEach { serializeIncompatibility(it) }
|
||||
}
|
||||
}
|
||||
fun toJSON() = Json.encodeToString(this)
|
||||
|
||||
companion object {
|
||||
fun deserialize(parser: JsonParser): Release {
|
||||
@ -203,5 +223,6 @@ data class Release(
|
||||
}
|
||||
}::class
|
||||
}
|
||||
fun fromJson(json: String) = Json.decodeFromString<Release>(json)
|
||||
}
|
||||
}
|
||||
|
@ -8,9 +8,14 @@ import com.fasterxml.jackson.core.JsonParser
|
||||
import com.looker.droidify.utility.extension.json.collectNotNullStrings
|
||||
import com.looker.droidify.utility.extension.json.forEachKey
|
||||
import com.looker.droidify.utility.extension.json.writeArray
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.net.URL
|
||||
|
||||
@Entity
|
||||
@Serializable
|
||||
data class Repository(
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
@ColumnInfo(name = "_id")
|
||||
@ -73,6 +78,7 @@ data class Repository(
|
||||
generator.writeNumberField("timestamp", timestamp)
|
||||
generator.writeStringField("authentication", authentication)
|
||||
}
|
||||
fun toJSON() = Json.encodeToString(this)
|
||||
|
||||
companion object {
|
||||
fun deserialize(parser: JsonParser): Repository {
|
||||
@ -112,6 +118,7 @@ data class Repository(
|
||||
lastModified, entityTag, updated, timestamp, authentication
|
||||
)
|
||||
}
|
||||
fun fromJson(json: String) = Json.decodeFromString<Repository>(json)
|
||||
|
||||
fun newRepository(
|
||||
address: String = "",
|
||||
|
@ -7,7 +7,12 @@ import com.looker.droidify.database.entity.Installed
|
||||
import com.looker.droidify.database.entity.Release
|
||||
import com.looker.droidify.utility.extension.json.*
|
||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Serializable
|
||||
data class Product(
|
||||
var repositoryId: Long,
|
||||
val packageName: String,
|
||||
@ -138,8 +143,11 @@ data class Product(
|
||||
}
|
||||
generator.writeArray("releases") { releases.forEach { writeDictionary { it.serialize(this) } } }
|
||||
}
|
||||
fun toJSON() = Json.encodeToString(this)
|
||||
|
||||
companion object {
|
||||
fun fromJson(json: String) = Json.decodeFromString<Product>(json)
|
||||
|
||||
fun <T> findSuggested(
|
||||
products: List<T>,
|
||||
installed: Installed?,
|
||||
|
@ -3,7 +3,12 @@ package com.looker.droidify.entity
|
||||
import com.fasterxml.jackson.core.JsonGenerator
|
||||
import com.fasterxml.jackson.core.JsonParser
|
||||
import com.looker.droidify.utility.extension.json.forEachKey
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Serializable
|
||||
data class ProductPreference(val ignoreUpdates: Boolean, val ignoreVersionCode: Long) {
|
||||
fun shouldIgnoreUpdate(versionCode: Long): Boolean {
|
||||
return ignoreUpdates || ignoreVersionCode == versionCode
|
||||
@ -13,6 +18,7 @@ data class ProductPreference(val ignoreUpdates: Boolean, val ignoreVersionCode:
|
||||
generator.writeBooleanField("ignoreUpdates", ignoreUpdates)
|
||||
generator.writeNumberField("ignoreVersionCode", ignoreVersionCode)
|
||||
}
|
||||
fun toJSON() = Json.encodeToString(this)
|
||||
|
||||
companion object {
|
||||
fun deserialize(parser: JsonParser): ProductPreference {
|
||||
@ -27,5 +33,6 @@ data class ProductPreference(val ignoreUpdates: Boolean, val ignoreVersionCode:
|
||||
}
|
||||
return ProductPreference(ignoreUpdates, ignoreVersionCode)
|
||||
}
|
||||
fun fromJson(json: String) = Json.decodeFromString<ProductPreference>(json)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user