Browse Source

revision update implemented

pull/2667/head
MFijak 3 years ago
committed by Maximilian Fijak
parent
commit
073daeb18b
  1. 47
      src/db/models/group.rs

47
src/db/models/group.rs

@ -90,6 +90,8 @@ use crate::db::DbConn;
use crate::api::EmptyResult; use crate::api::EmptyResult;
use crate::error::MapResult; use crate::error::MapResult;
use super::{UserOrganization, User};
/// Database methods /// Database methods
impl Group { impl Group {
pub async fn save(&mut self, conn: &DbConn) -> EmptyResult { pub async fn save(&mut self, conn: &DbConn) -> EmptyResult {
@ -177,7 +179,10 @@ impl Group {
impl CollectionGroup { impl CollectionGroup {
pub async fn save(&mut self, conn: &DbConn) -> EmptyResult { pub async fn save(&mut self, conn: &DbConn) -> EmptyResult {
Group::update_revision(&self.groups_uuid, &conn).await; let group_users = GroupUser::find_by_group(&self.groups_uuid, conn).await;
for group_user in group_users {
group_user.update_user_revision(conn).await;
}
db_run! { conn: db_run! { conn:
sqlite, mysql { sqlite, mysql {
@ -238,7 +243,12 @@ impl CollectionGroup {
}} }}
} }
pub async fn delete(&self, conn: &DbConn) -> EmptyResult { pub async fn delete(&self, conn: &DbConn) -> EmptyResult {
let group_users = GroupUser::find_by_group(&self.groups_uuid, conn).await;
for group_user in group_users {
group_user.update_user_revision(conn).await;
}
db_run! { conn: { db_run! { conn: {
diesel::delete(collection_groups::table) diesel::delete(collection_groups::table)
.filter(collection_groups::collections_uuid.eq(&self.collections_uuid)) .filter(collection_groups::collections_uuid.eq(&self.collections_uuid))
@ -249,6 +259,11 @@ impl CollectionGroup {
} }
pub async fn delete_all_by_group(group_uuid: &str, conn: &DbConn) -> EmptyResult { pub async fn delete_all_by_group(group_uuid: &str, conn: &DbConn) -> EmptyResult {
let group_users = GroupUser::find_by_group(group_uuid, conn).await;
for group_user in group_users {
group_user.update_user_revision(conn).await;
}
db_run! { conn: { db_run! { conn: {
diesel::delete(collection_groups::table) diesel::delete(collection_groups::table)
.filter(collection_groups::groups_uuid.eq(group_uuid)) .filter(collection_groups::groups_uuid.eq(group_uuid))
@ -259,8 +274,8 @@ impl CollectionGroup {
} }
impl GroupUser { impl GroupUser {
pub async fn save(&mut self, conn: &DbConn) -> EmptyResult { pub async fn save(&mut self, conn: &DbConn) -> EmptyResult {
Group::update_revision(&self.groups_uuid, &conn).await; self.update_user_revision(conn).await;
db_run! { conn: db_run! { conn:
sqlite, mysql { sqlite, mysql {
@ -325,7 +340,19 @@ impl GroupUser {
}} }}
} }
pub async fn delete_by_group_id_and_user_id(group_uuid: &str, user_uuid: &str, conn: &DbConn) -> EmptyResult { pub async fn update_user_revision(&self, conn: &DbConn) {
match UserOrganization::find_by_uuid(&self.users_organizations_uuid, conn).await {
Some(user) => User::update_uuid_revision(&user.user_uuid, conn).await,
None => warn!("User could not be found!")
}
}
pub async fn delete_by_group_id_and_user_id(group_uuid: &str, user_uuid: &str, conn: &DbConn) -> EmptyResult {
match UserOrganization::find_by_uuid(user_uuid, conn).await {
Some(user) => User::update_uuid_revision(&user.user_uuid, conn).await,
None => warn!("User could not be found!")
};
db_run! { conn: { db_run! { conn: {
diesel::delete(groups_users::table) diesel::delete(groups_users::table)
.filter(groups_users::groups_uuid.eq(group_uuid)) .filter(groups_users::groups_uuid.eq(group_uuid))
@ -336,6 +363,11 @@ impl GroupUser {
} }
pub async fn delete_all_by_group(group_uuid: &str, conn: &DbConn) -> EmptyResult { pub async fn delete_all_by_group(group_uuid: &str, conn: &DbConn) -> EmptyResult {
let group_users = GroupUser::find_by_group(group_uuid, conn).await;
for group_user in group_users {
group_user.update_user_revision(conn).await;
}
db_run! { conn: { db_run! { conn: {
diesel::delete(groups_users::table) diesel::delete(groups_users::table)
.filter(groups_users::groups_uuid.eq(group_uuid)) .filter(groups_users::groups_uuid.eq(group_uuid))
@ -345,6 +377,11 @@ impl GroupUser {
} }
pub async fn delete_all_by_user(users_organizations_uuid: &str, conn: &DbConn) -> EmptyResult { pub async fn delete_all_by_user(users_organizations_uuid: &str, conn: &DbConn) -> EmptyResult {
match UserOrganization::find_by_uuid(users_organizations_uuid, conn).await {
Some(user) => User::update_uuid_revision(&user.user_uuid, conn).await,
None => warn!("User could not be found!")
}
db_run! { conn: { db_run! { conn: {
diesel::delete(groups_users::table) diesel::delete(groups_users::table)
.filter(groups_users::users_organizations_uuid.eq(users_organizations_uuid)) .filter(groups_users::users_organizations_uuid.eq(users_organizations_uuid))

Loading…
Cancel
Save