platz_sdk/resources/
secrets.rs1use 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}