Skip to main content

coil_auth/types/
namespace.rs

1use 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}