coil_auth/types/
namespace.rs1use super::*;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum Namespace {
5 Tenant,
6 Site,
7 Brand,
8 Storefront,
9 User,
10 Group,
11 Team,
12 ServiceAccount,
13 Page,
14 Navigation,
15 Product,
16 Collection,
17 Order,
18 Subscription,
19 MembershipTier,
20 Event,
21 EventSlot,
22 Booking,
23 Media,
24 MediaLibrary,
25 Asset,
26 AssetFolder,
27 ThemeAssetBundle,
28 AdminModule,
29}
30
31impl Namespace {
32 pub const fn as_str(self) -> &'static str {
33 match self {
34 Self::Tenant => "tenant",
35 Self::Site => "site",
36 Self::Brand => "brand",
37 Self::Storefront => "storefront",
38 Self::User => "user",
39 Self::Group => "group",
40 Self::Team => "team",
41 Self::ServiceAccount => "service_account",
42 Self::Page => "page",
43 Self::Navigation => "navigation",
44 Self::Product => "product",
45 Self::Collection => "collection",
46 Self::Order => "order",
47 Self::Subscription => "subscription",
48 Self::MembershipTier => "membership_tier",
49 Self::Event => "event",
50 Self::EventSlot => "event_slot",
51 Self::Booking => "booking",
52 Self::Media => "media",
53 Self::MediaLibrary => "media_library",
54 Self::Asset => "asset",
55 Self::AssetFolder => "asset_folder",
56 Self::ThemeAssetBundle => "theme_asset_bundle",
57 Self::AdminModule => "admin_module",
58 }
59 }
60
61 pub fn from_str(value: &str) -> Option<Self> {
62 match value {
63 "tenant" => Some(Self::Tenant),
64 "site" => Some(Self::Site),
65 "brand" => Some(Self::Brand),
66 "storefront" => Some(Self::Storefront),
67 "user" => Some(Self::User),
68 "group" => Some(Self::Group),
69 "team" => Some(Self::Team),
70 "service_account" => Some(Self::ServiceAccount),
71 "page" => Some(Self::Page),
72 "navigation" => Some(Self::Navigation),
73 "product" => Some(Self::Product),
74 "collection" => Some(Self::Collection),
75 "order" => Some(Self::Order),
76 "subscription" => Some(Self::Subscription),
77 "membership_tier" => Some(Self::MembershipTier),
78 "event" => Some(Self::Event),
79 "event_slot" => Some(Self::EventSlot),
80 "booking" => Some(Self::Booking),
81 "media" => Some(Self::Media),
82 "media_library" => Some(Self::MediaLibrary),
83 "asset" => Some(Self::Asset),
84 "asset_folder" => Some(Self::AssetFolder),
85 "theme_asset_bundle" => Some(Self::ThemeAssetBundle),
86 "admin_module" => Some(Self::AdminModule),
87 _ => None,
88 }
89 }
90}
91
92impl fmt::Display for Namespace {
93 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
94 f.write_str(self.as_str())
95 }
96}