1
0
Fork 0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2025-07-31 08:09:07 +00:00

Adding some oganization features

This commit is contained in:
Miroslav Prasil 2018-04-20 17:35:11 +01:00
commit c5185ddb83
5 changed files with 202 additions and 12 deletions

View file

@ -65,4 +65,65 @@ impl Collection {
.filter(collections::uuid.eq(uuid))
.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_uuid_and_user(uuid: &str, user_uuid: &str, conn: &DbConn) -> Option<Self> {
match users_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)
}
}
}
use super::User;
#[derive(Debug, Identifiable, Queryable, Insertable, Associations)]
#[table_name = "users_collections"]
#[belongs_to(User, foreign_key = "user_uuid")]
#[belongs_to(Collection, foreign_key = "collection_uuid")]
#[primary_key(user_uuid, collection_uuid)]
pub struct CollectionUsers {
pub user_uuid: String,
pub collection_uuid: String,
}
/// Local methods
impl CollectionUsers {
pub fn new(
user_uuid: String,
collection_uuid: String,
) -> Self {
Self {
user_uuid,
collection_uuid,
}
}
}
use db::schema::users_collections;
/// Database methods
impl CollectionUsers {
pub fn save(&mut self, conn: &DbConn) -> bool {
match diesel::replace_into(users_collections::table)
.values(&*self)
.execute(&**conn) {
Ok(1) => true, // One row inserted
_ => false,
}
}
}