Как сохранить то, что пользователь искал и его результат - PullRequest
0 голосов
/ 07 июля 2019

Я хочу создать базу данных для хранения того, что пользователь искал, у меня уже есть это:

@Entity(tableName = "user_searched")
data class UserSearched (
    @PrimaryKey
    @NonNull
    @ColumnInfo(name = "item")
    val item: String
)

И затем я хочу связать с ним ответ, это может быть отдельный элемент илиlist of:

@Entity(tableName = "my_item")
data class MyItem(
    @PrimaryKey
    @NonNull
    @ColumnInfo(name = "id")
    val id: Int,
    @ColumnInfo(name = "name") val name: String,
    @ColumnInfo(name = "description") val description: String
)

Но тогда я не знаю, как создать отношение, я имею в виду, что я хочу сделать запрос, например, если элемент «android» уже искал раньше, просто верните списокMyItem в качестве ответа.

Как этого добиться с Room db?Я использую rxJava.

ВАЖНОЕ ПРИМЕЧАНИЕ

Существует возможность, когда пользователь ищет "Android", в этом случае он содержит список устройств List<MyItem> хорошо, дело в том, что пользователь ищет«Google» может также отображать элементы, отображаемые с «Android», поэтому я не знаю, хорошая ли идея создать, например, ForeignKey для MyItem, потому что он может содержать более одного ...

EDIT

Просто создал таблицу Join, чтобы связать их следующим образом:

@Entity(
    tableName = "name_item_join", primaryKeys = ["name", "item_id"], foreignKeys = [
        ForeignKey(
            entity = MySearch::class,
            parentColumns = ["name"],
            childColumns = ["join_name_id"]
        ),
        ForeignKey(
            entity = MyItem::class,
            parentColumns = ["item_id"],
            childColumns = ["join_item_id"]
        )
    ]
)
data class NameItemJoin(
    @ColumnInfo(name = "join_name_id")
    val nameId: Int,
    @ColumnInfo(name = "join_item_id")
    val itemId: Int
)

Итак, теперь мой вопрос: всякий раз, когда я добавляю запись в UserSearched, а затем внутри MyItemя должен вручную добавить их в NameItemJoin?Также мне нужно создать @Dao, чтобы получить все элементы, заданные по имени, верно?

Поток: Первая вставка в UserSearched Вторая вставка в MyItem Затем я хотел бы заполнитьNameItemJoin, поэтому, когда я ищу item_id, я получаю Список или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...