restflow_core/services/
secrets.rs

1use crate::{AppCore, models::Secret};
2use anyhow::{Context, Result};
3use std::sync::Arc;
4
5/// List all secrets (without values for security)
6pub async fn list_secrets(core: &Arc<AppCore>) -> Result<Vec<Secret>> {
7    core.storage
8        .secrets
9        .list_secrets()
10        .context("Failed to list secrets")
11}
12
13/// Get a secret value by key
14pub async fn get_secret(core: &Arc<AppCore>, key: &str) -> Result<Option<String>> {
15    core.storage
16        .secrets
17        .get_secret(key)
18        .with_context(|| format!("Failed to get secret {}", key))
19}
20
21/// Set or update a secret with optional description
22pub async fn set_secret(
23    core: &Arc<AppCore>,
24    key: &str,
25    value: &str,
26    description: Option<String>,
27) -> Result<()> {
28    core.storage
29        .secrets
30        .set_secret(key, value, description)
31        .with_context(|| format!("Failed to set secret {}", key))
32}
33
34/// Delete a secret
35pub async fn delete_secret(core: &Arc<AppCore>, key: &str) -> Result<()> {
36    core.storage
37        .secrets
38        .delete_secret(key)
39        .with_context(|| format!("Failed to delete secret {}", key))
40}
41
42/// Check if a secret exists
43pub async fn has_secret(core: &Arc<AppCore>, key: &str) -> Result<bool> {
44    core.storage
45        .secrets
46        .has_secret(key)
47        .with_context(|| format!("Failed to check secret {}", key))
48}