1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-01-08 11:42:35 +00:00
comunicapiv3/src/data/group.rs

83 lines
2.2 KiB
Rust
Raw Normal View History

2020-06-23 16:55:23 +00:00
//! # Group information
//!
//! Group visibility level
2020-06-24 16:23:44 +00:00
use crate::data::group_id::GroupID;
2020-06-23 16:55:23 +00:00
#[allow(non_camel_case_types)]
2020-06-24 16:23:44 +00:00
#[derive(Eq, PartialEq, Hash, Debug)]
2020-06-23 16:55:23 +00:00
pub enum GroupVisibilityLevel {
OPEN_GROUP,
PRIVATE_GROUP,
SECRETE_GROUP,
}
2020-06-24 16:23:44 +00:00
#[allow(non_camel_case_types)]
#[derive(Eq, PartialEq, Hash, Debug)]
pub enum GroupRegistrationLevel {
OPEN_REGISTRATION = 0,
MODERATED_REGISTRATION = 1,
CLOSED_REGISTRATION = 2,
}
#[allow(non_camel_case_types)]
#[derive(Eq, PartialEq, Hash, Debug)]
pub enum GroupPostsCreationLevel {
//Only the moderators and the administrator can create posts
POSTS_LEVEL_MODERATORS = 0,
//All the members of the group can create posts
POSTS_LEVEL_ALL_MEMBERS = 1,
}
#[allow(non_camel_case_types)]
#[derive(Eq, PartialEq, Hash, Debug, PartialOrd)]
pub enum GroupAccessLevel {
//Can not even know if the group exists or not
NO_ACCESS = 0,
//Access to the name of the group only
LIMITED_ACCESS = 1,
//Can see the posts of the group, but not a member of the group
VIEW_ACCESS = 2,
//Member access (same as view access but as member)
MEMBER_ACCESS = 3,
//Can create posts, even if posts creation is restricted
MODERATOR_ACCESS = 4,
//Can do everything
ADMIN_ACCESS = 5,
}
2020-06-24 16:23:44 +00:00
/// Group information
#[derive(Debug)]
pub struct Group {
pub id: GroupID,
pub name: String,
pub members_count: u64,
pub visibility: GroupVisibilityLevel,
pub registration_level: GroupRegistrationLevel,
pub posts_creation_level: GroupPostsCreationLevel,
pub logo: Option<String>,
pub virtual_directory: Option<String>,
pub time_create: u64,
pub description: Option<String>,
pub url: Option<String>,
}
#[cfg(test)]
mod tests {
use crate::data::group::GroupAccessLevel;
#[test]
fn access_level_coherence() {
assert!(GroupAccessLevel::NO_ACCESS < GroupAccessLevel::LIMITED_ACCESS);
assert!(GroupAccessLevel::LIMITED_ACCESS < GroupAccessLevel::VIEW_ACCESS);
assert!(GroupAccessLevel::VIEW_ACCESS < GroupAccessLevel::MEMBER_ACCESS);
assert!(GroupAccessLevel::MEMBER_ACCESS < GroupAccessLevel::MODERATOR_ACCESS);
assert!(GroupAccessLevel::MODERATOR_ACCESS < GroupAccessLevel::ADMIN_ACCESS);
}
2020-06-23 16:55:23 +00:00
}