Я пытаюсь создать приложение, которое поможет мне отслеживать некоторые задачи, которые мы должны выполнить в игре.
У меня есть база данных Firebase Firestore, в которой хранятся все задачи, и я загружаю в приложение запускаю данные и добавляю только ту, которой у меня нет.
Вот моя модель входа:
@Entity(tableName = "entry_table")
data class Entry(
@PrimaryKey(autoGenerate = true) var uid: Long?,
@ColumnInfo(name = "title") val title: String,
@ColumnInfo(name = "description") val description: String,
@ColumnInfo(name = "target") val target: Int = 0,
@ColumnInfo(name = "position") val position: Int = 0,
@ColumnInfo(name = "starred") val starred: Boolean = false
) {
constructor(): this(null, "", "", 0, 0, starred = false)
}
Поскольку я загружаю документ из базы данных firestore, я не могу установить идентификатор перед вставкой записей в базу данных SQLite.
Это означает, что я не могу использовать метод «Содержит» в моем списке Ливийных данных (поскольку записи, которые я получаю, имеют «нулевой» идентификатор, а тот из базы данных имеет идентификатор). Мне нужно зациклить все данные, вот код:
@WorkerThread
suspend fun insertEntry(entry: Entry) {
for (doc in entriesList.value!!){
if (doc.description == entry.description && doc.title == entry.title) {
Log.d("MAIN_AC", "Entry already saved $entry")
return
}
}
entryDAO.insertEntry(entry)
}
Мой код работает, но я не удовлетворен им, есть ли лучший способ сделать это? Я надеялся, что метод содержимого может игнорировать некоторые аргументы (в моем случае это автоматически сгенерированный идентификатор)