Skip to main content

coil_core/manifest/
integration.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub enum IntegrationKind {
3    AdminNavigation,
4    AdminWorkflow,
5    FrontendRendering,
6    SearchIndex,
7    SeoMetadata,
8    JsonLd,
9    LocalizedContent,
10    CacheInvalidation,
11    StoragePolicy,
12    CommerceBridge,
13    AuthPublication,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub struct IntegrationPoint {
18    pub kind: IntegrationKind,
19    pub surface: String,
20    pub description: String,
21}
22
23impl IntegrationPoint {
24    pub fn new(
25        kind: IntegrationKind,
26        surface: impl Into<String>,
27        description: impl Into<String>,
28    ) -> Self {
29        Self {
30            kind,
31            surface: surface.into(),
32            description: description.into(),
33        }
34    }
35}
36
37#[derive(Debug, Clone, Copy, PartialEq, Eq)]
38pub enum ModuleBehavior {
39    CacheInvalidation,
40    LocalizedContent,
41    SeoMetadata,
42    JsonLd,
43    AccessibleAdminUi,
44    StoragePolicyAware,
45    AuthGovernedPublication,
46    AsyncJobs,
47    AuditedBulkActions,
48}
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
51pub enum ExtensionSlotKind {
52    Page,
53    Api,
54    Job,
55    ScheduledJob,
56    Webhook,
57    AdminWidget,
58    RenderHook,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq)]
62pub struct ExtensionSlotDescriptor {
63    pub kind: ExtensionSlotKind,
64    pub surface: String,
65    pub description: String,
66}
67
68impl ExtensionSlotDescriptor {
69    pub fn new(
70        kind: ExtensionSlotKind,
71        surface: impl Into<String>,
72        description: impl Into<String>,
73    ) -> Self {
74        Self {
75            kind,
76            surface: surface.into(),
77            description: description.into(),
78        }
79    }
80}