mayhem_db/models/server/
permissions.rs1use num_derive::FromPrimitive;
2use serde::{Deserialize, Serialize};
3
4#[derive(Deserialize, Serialize, Debug, Clone, FromPrimitive, PartialEq, Copy)]
5pub enum ServerPermission {
6 SendMessage,
7 ReadMessage,
8 EditMessage,
9 DeleteMessage,
10
11 LoadOldMessages,
12 AtMention,
13 AtEveryone,
14
15 JoinVoice,
16 VoiceUnmute,
17 VoiceUndeafen,
18
19 VoiceMuteOther,
20 VoiceDeafenOther,
21 TextMuteOther,
22 TextDeafenOther,
23
24 DeleteOtherMessage,
25 UseCommands,
26 UseAdminCommands,
27
28 Administrator,
29 EditServer,
30 DeleteServer,
31
32 AddChannel,
33 DeleteChannel,
34 EditChannel,
35
36 EditRole,
37 AddRole,
38 DeleteRole,
39
40 CreateInvite,
41 DeleteInvite,
42 EditInvite,
43
44 AddBot,
45 AddIntegration,
46 AddPlugin,
47
48 AddRoleMembers,
49 DeleteRoleMembers,
50 EditRoleMembers,
51
52 BulkActions,
53 EnableFeatures,
54}
55
56#[derive(Deserialize, Serialize, Debug, Clone, FromPrimitive, PartialEq, Copy)]
57pub enum PermissionAccessType {
58 GRANTED,
59 NONE,
60 DENIED,
61}
62
63pub fn deserialize_permission(string: String) -> (ServerPermission, PermissionAccessType) {
64 let mut split = string.split(':');
65
66 let permission_id = split.next().unwrap().parse::<u32>().unwrap();
67 let access = split.nth(1).unwrap().parse::<u32>().unwrap();
68
69 let permission: ServerPermission = num::FromPrimitive::from_u32(permission_id).unwrap();
70 let access_type: PermissionAccessType = num::FromPrimitive::from_u32(access).unwrap();
71
72 return (permission, access_type);
73}
74
75pub fn deserialize_permissions(
76 strings: Vec<String>,
77) -> Vec<(ServerPermission, PermissionAccessType)> {
78 let mut vec: Vec<(ServerPermission, PermissionAccessType)> = Vec::new();
79
80 for string in strings {
81 vec.push(deserialize_permission(string));
82 }
83
84 return vec;
85}