aa_storage_memory/
credential_store.rs1use std::sync::Arc;
4
5use aa_storage::{CredentialStore, Result, StorageError};
6use async_trait::async_trait;
7use dashmap::DashMap;
8
9#[derive(Clone, Default)]
12pub struct MemoryCredentialStore {
13 secrets: Arc<DashMap<String, Vec<u8>>>,
14}
15
16impl MemoryCredentialStore {
17 pub fn new() -> Self {
19 Self::default()
20 }
21}
22
23#[async_trait]
24impl CredentialStore for MemoryCredentialStore {
25 async fn get_secret(&self, key: &str) -> Result<Vec<u8>> {
26 self.secrets
27 .get(key)
28 .map(|entry| entry.value().clone())
29 .ok_or_else(|| StorageError::NotFound(format!("secret {key}")))
30 }
31
32 async fn put_secret(&self, key: &str, value: Vec<u8>) -> Result<()> {
33 self.secrets.insert(key.to_owned(), value);
34 Ok(())
35 }
36
37 async fn delete_secret(&self, key: &str) -> Result<()> {
38 self.secrets.remove(key);
39 Ok(())
40 }
41}