platz_sdk/resources/
secrets.rs

1use crate::client::PlatzClient;
2use anyhow::Result;
3use chrono::prelude::*;
4use kv_derive::{prelude::*, IntoVec};
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8#[derive(Debug, Deserialize, Clone)]
9pub struct Secret {
10    pub id: Uuid,
11    pub created_at: DateTime<Utc>,
12    pub updated_at: DateTime<Utc>,
13    pub env_id: Uuid,
14    pub collection: String,
15    pub name: String,
16}
17
18#[derive(Default, IntoVec)]
19pub struct SecretFilters {
20    #[kv(optional)]
21    pub name: Option<String>,
22    #[kv(optional)]
23    pub env_id: Option<Uuid>,
24    #[kv(optional)]
25    pub collection: Option<String>,
26}
27
28#[derive(Debug, Serialize)]
29pub struct UpdateSecret {
30    name: Option<String>,
31    contents: Option<String>,
32}
33
34#[derive(Debug, Serialize)]
35pub struct NewSecret {
36    pub env_id: Uuid,
37    pub collection: String,
38    pub name: String,
39    pub contents: String,
40}
41
42impl PlatzClient {
43    pub async fn secrets(&self, filters: SecretFilters) -> Result<Vec<Secret>> {
44        Ok(self
45            .request(reqwest::Method::GET, "/api/v2/secrets")
46            .add_to_query(filters.into_vec())
47            .paginated()
48            .await?)
49    }
50
51    pub async fn secret(&self, secret_id: Uuid) -> Result<Secret> {
52        Ok(self
53            .request(reqwest::Method::GET, format!("/api/v2/secrets/{secret_id}"))
54            .send()
55            .await?)
56    }
57
58    pub async fn update_secret(
59        &self,
60        secret_id: Uuid,
61        update_secret: UpdateSecret,
62    ) -> Result<Secret> {
63        Ok(self
64            .request(reqwest::Method::PUT, format!("/api/v2/secrets/{secret_id}"))
65            .send_with_body(update_secret)
66            .await?)
67    }
68
69    pub async fn create_secret(&self, new_secret: NewSecret) -> Result<Secret> {
70        Ok(self
71            .request(reqwest::Method::POST, "/api/v2/secrets")
72            .send_with_body(new_secret)
73            .await?)
74    }
75}