mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 11:52:13 +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.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import com.looker.droidify.database.DatabaseX
|
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.entity.ProductPreference
|
||||||
import com.looker.droidify.utility.extension.json.Json
|
import com.looker.droidify.utility.extension.json.Json
|
||||||
import com.looker.droidify.utility.extension.json.parseDictionary
|
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.SimpleSQLiteQuery
|
||||||
import androidx.sqlite.db.SupportSQLiteQuery
|
import androidx.sqlite.db.SupportSQLiteQuery
|
||||||
import com.looker.droidify.*
|
import com.looker.droidify.*
|
||||||
|
import com.looker.droidify.database.entity.*
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
import io.reactivex.rxjava3.core.Flowable
|
import io.reactivex.rxjava3.core.Flowable
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import androidx.room.Database
|
|||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import androidx.room.TypeConverters
|
import androidx.room.TypeConverters
|
||||||
|
import com.looker.droidify.database.entity.*
|
||||||
import com.looker.droidify.entity.Repository.Companion.defaultRepositories
|
import com.looker.droidify.entity.Repository.Companion.defaultRepositories
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
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.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.database.Installed
|
import com.looker.droidify.database.entity.Installed
|
||||||
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
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ import com.google.android.material.textview.MaterialTextView
|
|||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.content.Preferences
|
import com.looker.droidify.content.Preferences
|
||||||
import com.looker.droidify.content.ProductPreferences
|
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.entity.*
|
||||||
import com.looker.droidify.network.CoilDownloader
|
import com.looker.droidify.network.CoilDownloader
|
||||||
import com.looker.droidify.screen.ScreenshotsAdapter
|
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.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.looker.droidify.database.Product
|
import com.looker.droidify.database.entity.Product
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ProductsVerticalRecycler(productsList: List<Product>) {
|
fun ProductsVerticalRecycler(productsList: List<Product>) {
|
||||||
|
@ -73,7 +73,7 @@ class AppDetailFragment() : ScreenFragment(), AppDetailAdapter.Callbacks {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class Installed(
|
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>>,
|
val launcherActivities: List<Pair<String, String>>,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
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.databinding.FragmentExploreXBinding
|
||||||
import com.looker.droidify.entity.Repository
|
import com.looker.droidify.entity.Repository
|
||||||
import com.looker.droidify.ui.items.VAppItem
|
import com.looker.droidify.ui.items.VAppItem
|
||||||
|
@ -6,7 +6,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
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.databinding.FragmentInstalledXBinding
|
||||||
import com.looker.droidify.entity.Repository
|
import com.looker.droidify.entity.Repository
|
||||||
import com.looker.droidify.ui.items.HAppItem
|
import com.looker.droidify.ui.items.HAppItem
|
||||||
|
@ -6,7 +6,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
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.databinding.FragmentLatestXBinding
|
||||||
import com.looker.droidify.entity.Repository
|
import com.looker.droidify.entity.Repository
|
||||||
import com.looker.droidify.ui.items.HAppItem
|
import com.looker.droidify.ui.items.HAppItem
|
||||||
|
@ -9,7 +9,7 @@ import androidx.paging.LivePagedListBuilder
|
|||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import com.looker.droidify.content.Preferences
|
import com.looker.droidify.content.Preferences
|
||||||
import com.looker.droidify.database.DatabaseX
|
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.entity.ProductItem
|
||||||
import com.looker.droidify.ui.fragments.Request
|
import com.looker.droidify.ui.fragments.Request
|
||||||
import com.looker.droidify.ui.fragments.Source
|
import com.looker.droidify.ui.fragments.Source
|
||||||
|
@ -4,7 +4,7 @@ import androidx.lifecycle.MediatorLiveData
|
|||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.looker.droidify.database.DatabaseX
|
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() {
|
class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() {
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import com.fasterxml.jackson.core.JsonGenerator
|
|||||||
import com.fasterxml.jackson.core.JsonParser
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
import com.looker.droidify.*
|
import com.looker.droidify.*
|
||||||
import com.looker.droidify.content.Preferences
|
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.InstalledItem
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
@ -240,18 +240,18 @@ fun jsonGenerate(callback: (JsonGenerator) -> Unit): ByteArray {
|
|||||||
|
|
||||||
val PRODUCT_ASYNC_DIFFER_CONFIG
|
val PRODUCT_ASYNC_DIFFER_CONFIG
|
||||||
get() = AsyncDifferConfig.Builder(object :
|
get() = AsyncDifferConfig.Builder(object :
|
||||||
DiffUtil.ItemCallback<com.looker.droidify.database.Product>() {
|
DiffUtil.ItemCallback<com.looker.droidify.database.entity.Product>() {
|
||||||
override fun areItemsTheSame(
|
override fun areItemsTheSame(
|
||||||
oldItem: com.looker.droidify.database.Product,
|
oldItem: com.looker.droidify.database.entity.Product,
|
||||||
newItem: com.looker.droidify.database.Product
|
newItem: com.looker.droidify.database.entity.Product
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return oldItem.repository_id == newItem.repository_id
|
return oldItem.repository_id == newItem.repository_id
|
||||||
&& oldItem.package_name == newItem.package_name
|
&& oldItem.package_name == newItem.package_name
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun areContentsTheSame(
|
override fun areContentsTheSame(
|
||||||
oldItem: com.looker.droidify.database.Product,
|
oldItem: com.looker.droidify.database.entity.Product,
|
||||||
newItem: com.looker.droidify.database.Product
|
newItem: com.looker.droidify.database.entity.Product
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return oldItem.data_item == newItem.data_item
|
return oldItem.data_item == newItem.data_item
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user