SQLite-backed Key / Value Store
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #20 from Tyrannican/list-all-envs

List all environments

authored by

Graham Keenan and committed by
GitHub
15f282e7 dbedd652

+29 -4
+4
CHANGELOG.md
··· 2 2 3 3 Documenting changes between versions beginning from v0.3.0 4 4 5 + ## v0.10.3 6 + 7 + * `safir env` now lists all existing environments and indicates the currently loaded one 8 + 5 9 ## v0.10.2 6 10 7 11 * Reduced binary size - no other changes
+1 -1
Cargo.lock
··· 1054 1054 1055 1055 [[package]] 1056 1056 name = "safir" 1057 - version = "0.10.1" 1057 + version = "0.10.3" 1058 1058 dependencies = [ 1059 1059 "anyhow", 1060 1060 "async-trait",
+1 -1
Cargo.toml
··· 1 1 [package] 2 2 name = "safir" 3 - version = "0.10.2" 3 + version = "0.10.3" 4 4 edition = "2021" 5 5 authors = ["Graham Keenan <graham.keenan@outlook.com>"] 6 6 license = "MIT OR Apache-2.0"
+12 -2
src/main.rs
··· 49 49 } 50 50 Commands::Env => { 51 51 let cfg = safir.get_config(); 52 - let env = cfg.environment; 53 - println!("Currently loaded environment: '{env}'"); 52 + let current_env = cfg.environment; 53 + let envs = safir.environments().await?; 54 + 55 + println!("Safir environments:"); 56 + for env in envs { 57 + let penv = if env == current_env { 58 + format!("{env} <- Currently loaded") 59 + } else { 60 + env 61 + }; 62 + println!("- {penv}"); 63 + } 54 64 } 55 65 } 56 66
+6
src/store/db_store.rs
··· 133 133 Ok(()) 134 134 } 135 135 136 + async fn environments(&self) -> Result<Vec<String>> { 137 + let query = format!("select distinct environment from safir"); 138 + let result: Vec<String> = sqlx::query_scalar(&query).fetch_all(&self.pool).await?; 139 + Ok(result) 140 + } 141 + 136 142 fn get_config(&self) -> SafirConfig { 137 143 self.config.clone() 138 144 }
+4
src/store/file_store.rs
··· 187 187 Ok(()) 188 188 } 189 189 190 + async fn environments(&self) -> Result<Vec<String>> { 191 + Ok(self.store.keys().map(|e| e.to_string()).collect()) 192 + } 193 + 190 194 fn get_config(&self) -> SafirConfig { 191 195 self.config.clone() 192 196 }
+1
src/store/mod.rs
··· 18 18 async fn remove(&mut self, keys: Vec<String>) -> Result<()>; 19 19 async fn clear(&mut self) -> Result<()>; 20 20 async fn purge(&mut self) -> Result<()>; 21 + async fn environments(&self) -> Result<Vec<String>>; 21 22 fn get_config(&self) -> SafirConfig; 22 23 } 23 24