У меня есть база данных mov ie, где пользователи могут отмечать фильмы как просмотренные и избранные с помощью следующих моделей:
#[derive(Serialize, Deserialize, Identifiable, Queryable, Associations)]
#[table_name = "movies"]
struct Movie {
id: 32
}
#[derive(Serialize, Deserialize, Identifiable, Queryable, Associations)]
#[table_name = "users"]
struct User {
id: 32
}
#[derive(Serialize, Deserialize, Identifiable, Queryable, Associations)]
#[table_name = "favorite_movies"]
struct FavoriteMovie {
movie_id: i32,
user_id: i32,
}
#[derive(Serialize, Deserialize, Identifiable, Queryable, Associations)]
#[table_name = "watched_movies"]
struct WatchedMovie {
movie_id: i32,
user_id: i32,
date: DateTime,
}
Как мне поступить, если я хочу перечислить 100 последних добавленных фильмов в базу данных, а также включить пользовательские данные для каждого mov ie, если пользователь вошел в систему, избегая при этом проблемы с запросом N + 1?
Думаю, я мог бы добавить еще одну структуру для movies
таблица, в которую я также включаю необязательные данные пользователя, но я не уверен, как бы я использовал их вместе с дизельным ORM.
struct UserData {
favorite: bool,
watched: Option<DateTime>,
}
struct UserMovie {
id: i32,
user_data: Option<UserData>,
}