init
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
use super::types::{ServerExplorerItem, ServerTree};
|
||||
use super::{AnyResult, RepositoryContext};
|
||||
use crate::models::{category, channel, role, server, server_user};
|
||||
use crate::models::{
|
||||
category, channel, role, server, server_role_permission, server_user, server_user_permission,
|
||||
};
|
||||
use sea_orm::prelude::*;
|
||||
use sea_orm::{ActiveModelTrait, QuerySelect, Set};
|
||||
|
||||
use sea_orm::sea_query::OnConflict;
|
||||
use std::sync::Arc;
|
||||
use uuid::Uuid;
|
||||
|
||||
@@ -100,6 +103,80 @@ impl ServerRepository {
|
||||
let res = server::Entity::find().count(&self.context.db).await?;
|
||||
Ok(res as usize)
|
||||
}
|
||||
|
||||
pub async fn set_user_permission(
|
||||
&self,
|
||||
server_id: Uuid,
|
||||
user_id: Uuid,
|
||||
permissions: u64,
|
||||
) -> AnyResult<()> {
|
||||
let permission = server_user_permission::ActiveModel {
|
||||
server_id: Set(server_id),
|
||||
user_id: Set(user_id),
|
||||
permissions: Set(permissions as i64),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
server_user_permission::Entity::insert(permission)
|
||||
.on_conflict(
|
||||
OnConflict::columns([
|
||||
server_user_permission::Column::ServerId,
|
||||
server_user_permission::Column::UserId,
|
||||
])
|
||||
.update_columns([server_user_permission::Column::Permissions])
|
||||
.to_owned(),
|
||||
)
|
||||
.exec(&self.context.db)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn remove_user_permission(&self, server_id: Uuid, user_id: Uuid) -> AnyResult<()> {
|
||||
server_user_permission::Entity::delete_many()
|
||||
.filter(server_user_permission::Column::ServerId.eq(server_id))
|
||||
.filter(server_user_permission::Column::UserId.eq(user_id))
|
||||
.exec(&self.context.db)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn set_role_permission(
|
||||
&self,
|
||||
server_id: Uuid,
|
||||
role_id: Uuid,
|
||||
permissions: u64,
|
||||
) -> AnyResult<()> {
|
||||
let permission = server_role_permission::ActiveModel {
|
||||
server_id: Set(server_id),
|
||||
role_id: Set(role_id),
|
||||
permissions: Set(permissions as i64),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let result = server_role_permission::Entity::insert(permission)
|
||||
.on_conflict(
|
||||
OnConflict::columns([
|
||||
server_role_permission::Column::ServerId,
|
||||
server_role_permission::Column::RoleId,
|
||||
])
|
||||
.update_columns([server_role_permission::Column::Permissions])
|
||||
.to_owned(),
|
||||
)
|
||||
.exec(&self.context.db)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn remove_role_permission(&self, server_id: Uuid, role_id: Uuid) -> AnyResult<()> {
|
||||
server_role_permission::Entity::delete_many()
|
||||
.filter(server_role_permission::Column::ServerId.eq(server_id))
|
||||
.filter(server_role_permission::Column::RoleId.eq(role_id))
|
||||
.exec(&self.context.db)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
// Helpers
|
||||
|
||||
Reference in New Issue
Block a user