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>;