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