commit 69e624f82bd26b9b63784cdb89fb1ac5ee82169e
parent 68a423020082e98d8074d79075810109c5389391
Author: Daniel GarcĂa <dani1861994@hotmail.com>
Date: Thu, 26 Apr 2018 23:21:29 +0200
Improved collection loading
Diffstat:
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/src/db/models/collection.rs b/src/db/models/collection.rs
@@ -66,26 +66,19 @@ impl Collection {
.first::<Self>(&**conn).ok()
}
- pub fn find_by_user_uuid(uuid: &str, conn: &DbConn) -> Vec<Self> {
- match users_collections::table
- .filter(users_collections::user_uuid.eq(uuid))
- .select(users_collections::columns::collection_uuid)
- .load(&**conn) {
- Ok(uuids) => uuids.iter().map(|uuid: &String| {
- Collection::find_by_uuid(uuid, &conn).unwrap()
- }).collect(),
- Err(list) => vec![]
- }
+ pub fn find_by_user_uuid(user_uuid: &str, conn: &DbConn) -> Vec<Self> {
+ users_collections::table.inner_join(collections::table)
+ .filter(users_collections::user_uuid.eq(user_uuid))
+ .select(collections::all_columns)
+ .load::<Self>(&**conn).expect("Error loading user collections")
}
pub fn find_by_uuid_and_user(uuid: &str, user_uuid: &str, conn: &DbConn) -> Option<Self> {
- match users_collections::table
+ users_collections::table.inner_join(collections::table)
.filter(users_collections::collection_uuid.eq(uuid))
.filter(users_collections::user_uuid.eq(user_uuid))
- .first::<CollectionUsers>(&**conn).ok() {
- None => None,
- Some(collection_user) => Collection::find_by_uuid(&collection_user.collection_uuid, &conn)
- }
+ .select(collections::all_columns)
+ .first::<Self>(&**conn).ok()
}
}