Skip to main content

weft_core/app/
state.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
5pub enum ResolvedAppStatus {
6    #[default]
7    Resolved,
8    Unresolved,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
12pub struct ResolvedAppSources {
13    pub manifest_path: String,
14    pub config_path: Option<String>,
15    pub lock_path: Option<String>,
16}
17
18pub type ResolvedInstanceSources = ResolvedAppSources;
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
21pub struct AppBindingResolution {
22    pub capability: String,
23    pub provider: String,
24    pub mutable: bool,
25    #[serde(default)]
26    pub source: String,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, Default)]
30pub struct ResolvedApp {
31    pub name: String,
32    pub version: String,
33    pub display_name: String,
34    pub description: String,
35    pub capabilities: Vec<String>,
36    #[serde(default)]
37    pub enabled_features: Vec<String>,
38    pub bindings: Vec<AppBindingResolution>,
39    pub validation_checks: Vec<String>,
40    pub config_path: Option<String>,
41    pub status: ResolvedAppStatus,
42    pub errors: Vec<String>,
43    pub sources: ResolvedAppSources,
44}
45
46pub type ResolvedInstance = ResolvedApp;
47
48pub type ResolvedAppMap = HashMap<String, ResolvedApp>;
49pub type ResolvedInstanceMap = HashMap<String, ResolvedInstance>;