Feat(Tool): Add tool store
Add tool store, support install tool online.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package top.fatweb.oxygen.toolbox.model
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import top.fatweb.oxygen.toolbox.model.tool.ToolEntity.Platform
|
||||
|
||||
class Converters {
|
||||
private val json = Json { ignoreUnknownKeys = true }
|
||||
|
||||
@TypeConverter
|
||||
fun fromPlatform(platform: Platform): String = platform.name
|
||||
|
||||
@TypeConverter
|
||||
fun toPlatform(name: String): Platform = Platform.valueOf(name)
|
||||
|
||||
@TypeConverter
|
||||
fun fromStringList(stringList: List<String>): String = json.encodeToString(stringList)
|
||||
|
||||
@TypeConverter
|
||||
fun toStringList(stringList: String): List<String> = json.decodeFromString(stringList)
|
||||
|
||||
@TypeConverter
|
||||
fun fromLocalDateTime(localDateTime: LocalDateTime): String = localDateTime.toString()
|
||||
|
||||
@TypeConverter
|
||||
fun toLocalDateTime(string: String): LocalDateTime = LocalDateTime.parse(string)
|
||||
}
|
||||
@@ -1,8 +1,16 @@
|
||||
package top.fatweb.oxygen.toolbox.model.tool
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import androidx.room.TypeConverters
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import top.fatweb.oxygen.toolbox.model.Converters
|
||||
|
||||
data class Tool(
|
||||
@Entity(tableName = "tools")
|
||||
@TypeConverters(Converters::class)
|
||||
data class ToolEntity(
|
||||
@PrimaryKey
|
||||
val id: Long,
|
||||
|
||||
val name: String,
|
||||
@@ -17,7 +25,11 @@ data class Tool(
|
||||
|
||||
val base: String? = null,
|
||||
|
||||
val author: Author,
|
||||
val authorUsername: String,
|
||||
|
||||
val authorNickname: String,
|
||||
|
||||
val authorAvatar: String,
|
||||
|
||||
val ver: String,
|
||||
|
||||
@@ -33,7 +45,13 @@ data class Tool(
|
||||
|
||||
val createTime: LocalDateTime,
|
||||
|
||||
val updateTime: LocalDateTime
|
||||
val updateTime: LocalDateTime,
|
||||
|
||||
@ColumnInfo(defaultValue = "false")
|
||||
val isStar: Boolean = false,
|
||||
|
||||
@ColumnInfo(defaultValue = "NULL")
|
||||
val upgrade: String? = null
|
||||
) {
|
||||
enum class Platform {
|
||||
WEB,
|
||||
@@ -42,12 +60,4 @@ data class Tool(
|
||||
|
||||
ANDROID
|
||||
}
|
||||
|
||||
data class Author(
|
||||
val username: String,
|
||||
|
||||
val nickname: String,
|
||||
|
||||
val avatar: String
|
||||
)
|
||||
}
|
||||
@@ -10,5 +10,5 @@ data class ToolGroup(
|
||||
|
||||
val title: String,
|
||||
|
||||
val tools: List<Tool> = emptyList()
|
||||
val tools: List<ToolEntity> = emptyList()
|
||||
)
|
||||
Reference in New Issue
Block a user