boatctl 0.1.0

CLI for Blueboat Cloud.
Documentation
use std::collections::HashMap;

use serde::Serialize;

use crate::config::{AppConfig, MysqlMetadata, PubsubMetadata};

#[derive(Serialize)]
pub struct AppMetadata {
  pub env: HashMap<String, String>,
  pub secrets: HashMap<String, String>,
  pub mysql: HashMap<String, MysqlMetadata>,
  pub pubsub: HashMap<String, PubsubMetadata>,
}

impl AppMetadata {
  pub fn from_config(config: &AppConfig) -> Self {
    Self {
      env: config
        .env
        .iter()
        .map(|(k, v)| (k.get_ref().clone(), v.clone()))
        .collect(),
      secrets: config
        .secrets
        .iter()
        .map(|(k, v)| (k.get_ref().clone(), v.clone()))
        .collect(),
      mysql: config
        .mysql
        .iter()
        .map(|(k, v)| (k.get_ref().clone(), v.clone()))
        .collect(),
      pubsub: config
        .pubsub
        .iter()
        .map(|(k, v)| (k.get_ref().clone(), v.unwrap_as_metadata().clone()))
        .collect(),
    }
  }
}