mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 03:42:15 +00:00
Update: Break down Tables into entities and Covnerters
This commit is contained in:
parent
51736ecbef
commit
bf1a6420cd
@ -3,7 +3,7 @@ package com.looker.droidify.content
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.database.Lock
|
||||
import com.looker.droidify.database.entity.Lock
|
||||
import com.looker.droidify.entity.ProductPreference
|
||||
import com.looker.droidify.utility.extension.json.Json
|
||||
import com.looker.droidify.utility.extension.json.parseDictionary
|
||||
|
34
src/main/kotlin/com/looker/droidify/database/Converters.kt
Normal file
34
src/main/kotlin/com/looker/droidify/database/Converters.kt
Normal file
@ -0,0 +1,34 @@
|
||||
package com.looker.droidify.database
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.utility.jsonGenerate
|
||||
import com.looker.droidify.utility.jsonParse
|
||||
|
||||
object Converters {
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toRepository(byteArray: ByteArray) = byteArray.jsonParse { Repository.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(repository: Repository) = jsonGenerate(repository::serialize)
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toProduct(byteArray: ByteArray) =
|
||||
byteArray.jsonParse { com.looker.droidify.entity.Product.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(product: com.looker.droidify.entity.Product) = jsonGenerate(product::serialize)
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toProductItem(byteArray: ByteArray) = byteArray.jsonParse { ProductItem.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(productItem: ProductItem) = jsonGenerate(productItem::serialize)
|
||||
}
|
@ -8,6 +8,7 @@ import androidx.room.*
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery
|
||||
import androidx.sqlite.db.SupportSQLiteQuery
|
||||
import com.looker.droidify.*
|
||||
import com.looker.droidify.database.entity.*
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
|
||||
|
@ -5,6 +5,7 @@ import androidx.room.Database
|
||||
import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.TypeConverters
|
||||
import com.looker.droidify.database.entity.*
|
||||
import com.looker.droidify.entity.Repository.Companion.defaultRepositories
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
|
@ -1,113 +0,0 @@
|
||||
package com.looker.droidify.database
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import androidx.room.TypeConverter
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.utility.jsonGenerate
|
||||
import com.looker.droidify.utility.jsonParse
|
||||
|
||||
// TODO LATER: reduce redundancy by merging the entity and database classes
|
||||
@Entity
|
||||
class Repository {
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
@ColumnInfo(name = "_id")
|
||||
var id: Long = 0
|
||||
|
||||
var enabled = 0
|
||||
var deleted = false
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data: Repository? = null
|
||||
|
||||
val trueData: Repository?
|
||||
get() = data?.copy(id = id)
|
||||
|
||||
class IdAndDeleted {
|
||||
@ColumnInfo(name = "_id")
|
||||
var id = 0L
|
||||
|
||||
var deleted = false
|
||||
}
|
||||
}
|
||||
|
||||
@Entity(tableName = "product", primaryKeys = ["repository_id", "package_name"])
|
||||
open class Product {
|
||||
var repository_id = 0L
|
||||
var package_name = ""
|
||||
|
||||
var name = ""
|
||||
var summary = ""
|
||||
var description = ""
|
||||
var added = 0L
|
||||
var updated = 0L
|
||||
var version_code = 0L
|
||||
var signatures = ""
|
||||
var compatible = 0
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data: com.looker.droidify.entity.Product? = null
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data_item: ProductItem? = null
|
||||
}
|
||||
|
||||
@Entity(tableName = "temporary_product")
|
||||
class ProductTemp : Product()
|
||||
|
||||
@Entity(tableName = "category", primaryKeys = ["repository_id", "package_name", "name"])
|
||||
open class Category {
|
||||
var repository_id: Long = 0
|
||||
var package_name = ""
|
||||
var name = ""
|
||||
}
|
||||
|
||||
@Entity(tableName = "temporary_category")
|
||||
class CategoryTemp : Category()
|
||||
|
||||
@Entity(tableName = "memory_installed")
|
||||
class Installed(pName: String = "") {
|
||||
@PrimaryKey
|
||||
var package_name = pName
|
||||
|
||||
var version = ""
|
||||
var version_code = 0L
|
||||
var signature = ""
|
||||
}
|
||||
|
||||
@Entity(tableName = "memory_lock")
|
||||
class Lock {
|
||||
@PrimaryKey
|
||||
var package_name = ""
|
||||
|
||||
var version_code = 0L
|
||||
}
|
||||
|
||||
object Converters {
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toRepository(byteArray: ByteArray) = byteArray.jsonParse { Repository.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(repository: Repository) = jsonGenerate(repository::serialize)
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toProduct(byteArray: ByteArray) =
|
||||
byteArray.jsonParse { com.looker.droidify.entity.Product.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(product: com.looker.droidify.entity.Product) = jsonGenerate(product::serialize)
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toProductItem(byteArray: ByteArray) = byteArray.jsonParse { ProductItem.deserialize(it) }
|
||||
|
||||
@TypeConverter
|
||||
@JvmStatic
|
||||
fun toByteArray(productItem: ProductItem) = jsonGenerate(productItem::serialize)
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.looker.droidify.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
|
||||
@Entity(tableName = "category", primaryKeys = ["repository_id", "package_name", "name"])
|
||||
open class Category {
|
||||
var repository_id: Long = 0
|
||||
var package_name = ""
|
||||
var name = ""
|
||||
}
|
||||
|
||||
@Entity(tableName = "temporary_category")
|
||||
class CategoryTemp : Category()
|
@ -0,0 +1,14 @@
|
||||
package com.looker.droidify.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(tableName = "memory_installed")
|
||||
class Installed(pName: String = "") {
|
||||
@PrimaryKey
|
||||
var package_name = pName
|
||||
|
||||
var version = ""
|
||||
var version_code = 0L
|
||||
var signature = ""
|
||||
}
|
11
src/main/kotlin/com/looker/droidify/database/entity/Lock.kt
Normal file
11
src/main/kotlin/com/looker/droidify/database/entity/Lock.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package com.looker.droidify.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(tableName = "memory_lock")
|
||||
class Lock {
|
||||
@PrimaryKey
|
||||
var package_name = ""
|
||||
var version_code = 0L
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.looker.droidify.database.entity
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
|
||||
@Entity(tableName = "product", primaryKeys = ["repository_id", "package_name"])
|
||||
open class Product {
|
||||
var repository_id = 0L
|
||||
var package_name = ""
|
||||
|
||||
var name = ""
|
||||
var summary = ""
|
||||
var description = ""
|
||||
var added = 0L
|
||||
var updated = 0L
|
||||
var version_code = 0L
|
||||
var signatures = ""
|
||||
var compatible = 0
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data: com.looker.droidify.entity.Product? = null
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data_item: ProductItem? = null
|
||||
}
|
||||
|
||||
@Entity(tableName = "temporary_product")
|
||||
class ProductTemp : Product()
|
@ -0,0 +1,30 @@
|
||||
package com.looker.droidify.database.entity
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import com.looker.droidify.entity.Repository
|
||||
|
||||
// TODO LATER: reduce redundancy by merging the entity and database classes
|
||||
@Entity
|
||||
class Repository {
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
@ColumnInfo(name = "_id")
|
||||
var id: Long = 0
|
||||
|
||||
var enabled = 0
|
||||
var deleted = false
|
||||
|
||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||
var data: Repository? = null
|
||||
|
||||
val trueData: Repository?
|
||||
get() = data?.copy(id = id)
|
||||
|
||||
class IdAndDeleted {
|
||||
@ColumnInfo(name = "_id")
|
||||
var id = 0L
|
||||
|
||||
var deleted = false
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ package com.looker.droidify.entity
|
||||
import com.fasterxml.jackson.core.JsonGenerator
|
||||
import com.fasterxml.jackson.core.JsonParser
|
||||
import com.fasterxml.jackson.core.JsonToken
|
||||
import com.looker.droidify.database.Installed
|
||||
import com.looker.droidify.database.entity.Installed
|
||||
import com.looker.droidify.utility.extension.json.*
|
||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||
|
||||
|
@ -43,7 +43,7 @@ import com.google.android.material.textview.MaterialTextView
|
||||
import com.looker.droidify.R
|
||||
import com.looker.droidify.content.Preferences
|
||||
import com.looker.droidify.content.ProductPreferences
|
||||
import com.looker.droidify.database.Installed
|
||||
import com.looker.droidify.database.entity.Installed
|
||||
import com.looker.droidify.entity.*
|
||||
import com.looker.droidify.network.CoilDownloader
|
||||
import com.looker.droidify.screen.ScreenshotsAdapter
|
||||
|
@ -7,7 +7,7 @@ import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.looker.droidify.database.Product
|
||||
import com.looker.droidify.database.entity.Product
|
||||
|
||||
@Composable
|
||||
fun ProductsVerticalRecycler(productsList: List<Product>) {
|
||||
|
@ -73,7 +73,7 @@ class AppDetailFragment() : ScreenFragment(), AppDetailAdapter.Callbacks {
|
||||
}
|
||||
|
||||
private class Installed(
|
||||
val data: com.looker.droidify.database.Installed, val isSystem: Boolean,
|
||||
val data: com.looker.droidify.database.entity.Installed, val isSystem: Boolean,
|
||||
val launcherActivities: List<Pair<String, String>>,
|
||||
)
|
||||
|
||||
|
@ -5,7 +5,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.looker.droidify.database.Product
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.databinding.FragmentExploreXBinding
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
|
@ -6,7 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.Product
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.databinding.FragmentInstalledXBinding
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
|
@ -6,7 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.Product
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.databinding.FragmentLatestXBinding
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
|
@ -9,7 +9,7 @@ import androidx.paging.LivePagedListBuilder
|
||||
import androidx.paging.PagedList
|
||||
import com.looker.droidify.content.Preferences
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.database.Product
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.ui.fragments.Request
|
||||
import com.looker.droidify.ui.fragments.Source
|
||||
|
@ -4,7 +4,7 @@ import androidx.lifecycle.MediatorLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.database.Repository
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
|
||||
class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() {
|
||||
|
||||
|
@ -16,7 +16,7 @@ import com.fasterxml.jackson.core.JsonGenerator
|
||||
import com.fasterxml.jackson.core.JsonParser
|
||||
import com.looker.droidify.*
|
||||
import com.looker.droidify.content.Preferences
|
||||
import com.looker.droidify.database.Installed
|
||||
import com.looker.droidify.database.entity.Installed
|
||||
import com.looker.droidify.entity.InstalledItem
|
||||
import com.looker.droidify.entity.Product
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
@ -240,18 +240,18 @@ fun jsonGenerate(callback: (JsonGenerator) -> Unit): ByteArray {
|
||||
|
||||
val PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
get() = AsyncDifferConfig.Builder(object :
|
||||
DiffUtil.ItemCallback<com.looker.droidify.database.Product>() {
|
||||
DiffUtil.ItemCallback<com.looker.droidify.database.entity.Product>() {
|
||||
override fun areItemsTheSame(
|
||||
oldItem: com.looker.droidify.database.Product,
|
||||
newItem: com.looker.droidify.database.Product
|
||||
oldItem: com.looker.droidify.database.entity.Product,
|
||||
newItem: com.looker.droidify.database.entity.Product
|
||||
): Boolean {
|
||||
return oldItem.repository_id == newItem.repository_id
|
||||
&& oldItem.package_name == newItem.package_name
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(
|
||||
oldItem: com.looker.droidify.database.Product,
|
||||
newItem: com.looker.droidify.database.Product
|
||||
oldItem: com.looker.droidify.database.entity.Product,
|
||||
newItem: com.looker.droidify.database.entity.Product
|
||||
): Boolean {
|
||||
return oldItem.data_item == newItem.data_item
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user