revolt_permissions/models/
server.rs1#[cfg(feature = "schemas")]
2use schemars::JsonSchema;
3
4#[derive(Debug, Clone, Eq, PartialEq, Default)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[cfg_attr(feature = "schemas", derive(JsonSchema))]
8pub struct Override {
9 pub allow: u64,
11 pub deny: u64,
13}
14
15#[derive(Debug, Clone, Eq, PartialEq)]
17#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
18#[cfg_attr(feature = "schemas", derive(JsonSchema))]
19pub struct DataPermissionsField {
20 pub permissions: Override,
21}
22
23#[derive(Debug, Clone, Copy, Eq, PartialEq)]
25#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
26#[cfg_attr(feature = "schemas", derive(JsonSchema))]
27pub struct DataPermissionsValue {
28 pub permissions: u64,
29}
30
31#[derive(Debug, Clone, Eq, PartialEq)]
33#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
34#[cfg_attr(feature = "schemas", derive(JsonSchema))]
35#[cfg_attr(feature = "serde", serde(untagged))]
36pub enum DataPermissionPoly {
37 Value {
38 permissions: u64,
40 },
41 Field {
42 permissions: Override,
44 },
45}
46
47#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)]
50#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
51#[cfg_attr(feature = "schemas", derive(JsonSchema))]
52pub struct OverrideField {
53 pub a: i64,
55 pub d: i64,
57}
58
59impl Override {
60 pub fn allows(&self) -> u64 {
62 self.allow
63 }
64
65 pub fn denies(&self) -> u64 {
67 self.deny
68 }
69}
70
71impl From<Override> for OverrideField {
72 fn from(v: Override) -> Self {
73 Self {
74 a: v.allow as i64,
75 d: v.deny as i64,
76 }
77 }
78}
79
80impl From<OverrideField> for Override {
81 fn from(v: OverrideField) -> Self {
82 Self {
83 allow: v.a as u64,
84 deny: v.d as u64,
85 }
86 }
87}
88
89#[cfg(feature = "bson")]
90use bson::Bson;
91
92#[cfg(feature = "bson")]
93impl From<OverrideField> for Bson {
94 fn from(v: OverrideField) -> Self {
95 Self::Document(bson::to_document(&v).unwrap())
96 }
97}