У меня есть сущность, подобная этой:
data class Person(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo(name = "user_id", index = true) var userId: Long = 0,
@ColumnInfo(name = "first_name") var firstName: String = "",
@ColumnInfo(name = "mid_name") var midName: String = "",
@ColumnInfo(name = "last_name") var lastName: String = ""
) {
public fun fullName(): String {
return "$firstName $midName $lastName"
}
}
Я знаю, что могу установить атрибут "не нуль" для каждого именованного свойства. Но в моем случае нет необходимости заполнять все свойства имени, Я хочу только подтвердить, что полное имя пустое или нет , прежде чем этот объект будет сохранен в базе данных комнаты.
IЯ практикую использовать фреймворк MVVM, но сейчас я не уверен, куда мне поставить валидацию. Деятельность / Фрагмент? ViewModel? Repository? или внутри сущности напрямую?
Я думаю, может быть, мне следует сделать это в репозитории, чтобы я мог предотвратить неправильный ввод, прежде чем сохранить его в базе данных. Но что, если есть другой вариант использования, который мне нужен, чтобы проверить ту же вещь в другом хранилище? Если это так, то код будет продублирован в двух репозиториях.
Я когда-либо писал ruby на рельсах, в Модели есть функция проверки:
# This is ruby on rails code
validate :name_validation
def name_validation
if first_name == "" && mid_name == "" && last_name == ""
errors.add(:name, "the name should not be totally blank")
end
end
Интересно,Есть аналогичный способ проверки свойства в сущности, или есть лучшая практика для решения этой проблемы?
Пожалуйста, помогите мне разобраться.