Skip to main content

lenso_contracts/
console.rs

1//! Runtime Console contribution contracts.
2
3use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
7pub struct ConsoleSurface {
8    pub name: String,
9    pub label: String,
10    pub area: ConsoleArea,
11    pub route: String,
12    pub package: ConsolePackage,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub icon: Option<String>,
15    #[serde(default)]
16    pub required_capabilities: Vec<String>,
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub navigation: Option<ConsoleNavigation>,
19}
20
21#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
22#[serde(rename_all = "snake_case")]
23#[non_exhaustive]
24pub enum ConsoleArea {
25    Runtime,
26    Operations,
27    Data,
28    Configuration,
29}
30
31#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
32pub struct ConsolePackage {
33    pub name: String,
34    pub export: String,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
38pub struct ConsoleNavigation {
39    pub workspace: ConsoleWorkspaceRef,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub group: Option<ConsoleNavigationGroup>,
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub order: Option<i32>,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
47pub struct ConsoleWorkspaceRef {
48    pub id: String,
49    pub label: String,
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub icon: Option<String>,
52}
53
54#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
55pub struct ConsoleNavigationGroup {
56    pub id: String,
57    pub label: String,
58    #[serde(default, skip_serializing_if = "Option::is_none")]
59    pub icon: Option<String>,
60    #[serde(default, skip_serializing_if = "Option::is_none")]
61    pub order: Option<i32>,
62}