UserEntity.kt
package com.gyleedev.data.database.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
import com.gyleedev.githubsearch.domain.model.UserModel
@Entity(
tableName = "user",
indices = [Index(value = ["github_id"], unique = true)],
)
data class UserEntity(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val id: Long,
@ColumnInfo(name = "github_id")
val githubId: String,
@ColumnInfo(name = "name")
val name: String?,
@ColumnInfo(name = "followers")
val followers: Int,
@ColumnInfo(name = "following")
val following: Int,
@ColumnInfo(name = "avatar")
val avatar: String,
@ColumnInfo(name = "company")
val company: String?,
@ColumnInfo(name = "email")
val email: String?,
@ColumnInfo(name = "bio")
val bio: String?,
@ColumnInfo(name = "repos")
val repoCount: Int,
@ColumnInfo(name = "createdDate")
val createdDate: String?,
@ColumnInfo(name = "updatedDate")
val updatedDate: String?,
@ColumnInfo(name = "reposAddress")
val reposAddress: String,
@ColumnInfo(name = "blogUrl")
val blogUrl: String?,
@ColumnInfo(name = "favorite")
val favorite: Boolean,
)
fun UserModel.toEntity(): UserEntity = UserEntity(
id = id,
githubId = login,
name = name,
followers = followers,
following = following,
company = company,
avatar = avatar,
email = email,
bio = bio,
repoCount = repoCount,
createdDate = createdDate,
updatedDate = updatedDate,
reposAddress = reposAddress,
blogUrl = blogUrl,
favorite = favorite,
)
fun UserEntity.toModel(): UserModel = UserModel(
id = id,
login = githubId,
name = name,
followers = followers,
following = following,
company = company,
avatar = avatar,
email = email,
bio = bio,
repoCount = repoCount,
createdDate = createdDate,
updatedDate = updatedDate,
reposAddress = reposAddress,
blogUrl = blogUrl,
favorite = favorite,
)