mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-21 06:39:19 +00:00
Update: Break down Tables into entities and Covnerters
This commit is contained in:
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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user