mayhem-db 0.2.0-beta.1

A Discord-like chat application optimized for security, stability, speed, and ultimate customization. => Database Module
Documentation
use num_derive::FromPrimitive;
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Debug, Clone, FromPrimitive, PartialEq, Copy)]
pub enum ServerPermission {
    SendMessage,
    ReadMessage,
    EditMessage,
    DeleteMessage,

    LoadOldMessages,
    AtMention,
    AtEveryone,

    JoinVoice,
    VoiceUnmute,
    VoiceUndeafen,

    VoiceMuteOther,
    VoiceDeafenOther,
    TextMuteOther,
    TextDeafenOther,

    DeleteOtherMessage,
    UseCommands,
    UseAdminCommands,

    Administrator,
    EditServer,
    DeleteServer,

    AddChannel,
    DeleteChannel,
    EditChannel,

    EditRole,
    AddRole,
    DeleteRole,

    CreateInvite,
    DeleteInvite,
    EditInvite,

    AddBot,
    AddIntegration,
    AddPlugin,

    AddRoleMembers,
    DeleteRoleMembers,
    EditRoleMembers,

    BulkActions,
    EnableFeatures,
}

#[derive(Deserialize, Serialize, Debug, Clone, FromPrimitive, PartialEq, Copy)]
pub enum PermissionAccessType {
    GRANTED,
    NONE,
    DENIED,
}

pub fn deserialize_permission(string: String) -> (ServerPermission, PermissionAccessType) {
    let mut split = string.split(':');

    let permission_id = split.next().unwrap().parse::<u32>().unwrap();
    let access = split.nth(1).unwrap().parse::<u32>().unwrap();

    let permission: ServerPermission = num::FromPrimitive::from_u32(permission_id).unwrap();
    let access_type: PermissionAccessType = num::FromPrimitive::from_u32(access).unwrap();

    return (permission, access_type);
}

pub fn deserialize_permissions(
    strings: Vec<String>,
) -> Vec<(ServerPermission, PermissionAccessType)> {
    let mut vec: Vec<(ServerPermission, PermissionAccessType)> = Vec::new();

    for string in strings {
        vec.push(deserialize_permission(string));
    }

    return vec;
}