//! # Groups helper //! //! @author Pierre Hubert use crate::constants::database_tables_names::GROUPS_LIST_TABLE; use crate::data::error::ResultBoxError; use crate::data::group::GroupVisibilityLevel; use crate::data::group_id::GroupID; use crate::helpers::database; impl GroupVisibilityLevel { pub fn to_db(&self) -> u64 { match self { GroupVisibilityLevel::OPEN_GROUP => 0, GroupVisibilityLevel::PRIVATE_GROUP => 1, GroupVisibilityLevel::SECRETE_GROUP => 2, } } } /// Find a group id by virtual directory pub fn find_by_virtual_directory(dir: &str) -> ResultBoxError { database::QueryInfo::new(GROUPS_LIST_TABLE) .cond("virtual_directory", dir) .add_field("id") .query_row(|res| res.get_group_id("id")) } /// Search for group pub fn search_group(query: &str, limit: u64) -> ResultBoxError> { database::QueryInfo::new(GROUPS_LIST_TABLE) .set_custom_where("name LIKE ? AND visibility != ?") .add_custom_where_argument_str(format!("%{}%", query).as_str()) .add_custom_where_argument_u64(GroupVisibilityLevel::SECRETE_GROUP.to_db()) .set_limit(limit) .add_field("id") .exec(|row| row.get_group_id("id")) }