mirror of
https://github.com/imcarlost/Acronyms.git
synced 2026-04-10 02:46:53 -04:00
Add: acronyms models
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package dev.carlos.acronyms.models
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
||||
import androidx.room.PrimaryKey
|
||||
import androidx.room.TypeConverters
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
data class ShortformRemote(
|
||||
@SerializedName("sf") val value: String,
|
||||
@SerializedName("lfs") val results: List<LongformRemote>
|
||||
) : Parcelable {
|
||||
@Parcelize
|
||||
data class LongformRemote(
|
||||
@SerializedName("lf") val value: String,
|
||||
@SerializedName("freq") val corpusFrequency: Int,
|
||||
@SerializedName("since") val since: Int
|
||||
) : Parcelable
|
||||
}
|
||||
|
||||
@Entity(tableName = ShortformEntity.TABLE_NAME, indices = [Index(value = ["value"], unique = true)])
|
||||
@TypeConverters(LongformListConverter::class)
|
||||
data class ShortformEntity(
|
||||
@PrimaryKey
|
||||
val value: String,
|
||||
val results: List<LongformEntity>
|
||||
) {
|
||||
data class LongformEntity(
|
||||
val value: String,
|
||||
val corpusFrequency: Int,
|
||||
val since: Int
|
||||
)
|
||||
|
||||
companion object {
|
||||
const val TABLE_NAME = "shortforms"
|
||||
}
|
||||
}
|
||||
|
||||
data class ShortformModel(
|
||||
val value: String,
|
||||
val results: List<LongformModel>
|
||||
) {
|
||||
data class LongformModel(
|
||||
val value: String,
|
||||
val corpusFrequency: Int,
|
||||
val since: Int
|
||||
)
|
||||
}
|
||||
24
acronyms/src/main/java/dev/carlos/acronyms/models/Mappers.kt
Normal file
24
acronyms/src/main/java/dev/carlos/acronyms/models/Mappers.kt
Normal file
@@ -0,0 +1,24 @@
|
||||
package dev.carlos.acronyms.models
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
|
||||
class LongformListConverter {
|
||||
@TypeConverter
|
||||
fun fromString(value: String): List<ShortformEntity.LongformEntity> {
|
||||
val listType = object : TypeToken<List<ShortformEntity.LongformEntity>>() {}.type
|
||||
return Gson().fromJson(value, listType)
|
||||
}
|
||||
|
||||
@TypeConverter
|
||||
fun fromList(list: List<ShortformEntity.LongformEntity>) = Gson().toJson(list)
|
||||
}
|
||||
|
||||
fun ShortformRemote.toShortformEntity() = ShortformEntity(this.value, this.results.map {
|
||||
ShortformEntity.LongformEntity(it.value, it.corpusFrequency, it.since)
|
||||
})
|
||||
|
||||
fun ShortformEntity.toShortformModel() = ShortformModel(this.value, this.results.map {
|
||||
ShortformModel.LongformModel(it.value, it.corpusFrequency, it.since)
|
||||
})
|
||||
Reference in New Issue
Block a user