use serde::{Serialize,Deserialize}; use async_graphql::{SimpleObject}; use crate::{Profile,Auth,Permissions}; #[derive(Clone, Debug, Serialize, Deserialize, Default, SimpleObject)] pub struct DataContext { pub profile: Profile, pub auth: Auth, pub perms: Permissions, } pub fn set_data_ctx() -> DataContext { let data_ctx_path = &envmnt::get_or("DATA_CONTEXT", "data/ctx.yaml"); let fallback = || { DataContext { profile: Profile::Pro, auth: Auth::NotSet, perms: Permissions::Write } }; let mut data_ctx: DataContext = fallback(); if std::path::Path::new(&data_ctx_path).exists() { data_ctx = match std::fs::read_to_string(&data_ctx_path) { Ok(content) => match serde_yaml::from_str(&content) { Ok(res) => res, Err(_) => fallback(), }, Err(_) => fallback(), } } data_ctx }