Feat(Tool): Add tool store

Add tool store, support install tool online.
This commit is contained in:
2024-08-08 17:56:45 +08:00
parent c1879dfdc8
commit c9c0debb2b
35 changed files with 1078 additions and 179 deletions

View File

@@ -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)
}

View File

@@ -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
)
}

View File

@@ -10,5 +10,5 @@ data class ToolGroup(
val title: String,
val tools: List<Tool> = emptyList()
val tools: List<ToolEntity> = emptyList()
)