platz_sdk/resources/
envs.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 Env {
10    pub id: Uuid,
11    pub created_at: DateTime<Utc>,
12    pub name: String,
13    pub node_selector: serde_json::Value,
14    pub tolerations: serde_json::Value,
15    pub auto_add_new_users: bool,
16}
17
18#[derive(Default, IntoVec)]
19pub struct EnvFilters {
20    #[kv(optional)]
21    pub name: Option<String>,
22    #[kv(optional)]
23    pub auto_add_new_users: Option<bool>,
24}
25
26#[derive(Debug, Serialize)]
27pub struct UpdateEnv {
28    pub name: Option<String>,
29    pub node_selector: Option<serde_json::Value>,
30    pub tolerations: Option<serde_json::Value>,
31    pub auto_add_new_users: Option<bool>,
32}
33
34impl PlatzClient {
35    pub async fn envs(&self, filters: EnvFilters) -> Result<Vec<Env>> {
36        Ok(self
37            .request(reqwest::Method::GET, "/api/v2/envs")
38            .add_to_query(filters.into_vec())
39            .paginated()
40            .await?)
41    }
42
43    pub async fn env(&self, env_id: Uuid) -> Result<Env> {
44        Ok(self
45            .request(reqwest::Method::GET, format!("/api/v2/envs/{env_id}"))
46            .send()
47            .await?)
48    }
49
50    pub async fn update_env(&self, env_id: Uuid, update_env: UpdateEnv) -> Result<Env> {
51        Ok(self
52            .request(reqwest::Method::GET, format!("/api/v2/envs/{env_id}"))
53            .send_with_body(update_env)
54            .await?)
55    }
56}