bitwarden_sm/projects/
delete.rs1use bitwarden_api_api::models::{
2 BulkDeleteResponseModel, BulkDeleteResponseModelListResponseModel,
3};
4use bitwarden_core::{client::Client, require};
5use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7use uuid::Uuid;
8
9use crate::error::SecretsManagerError;
10
11#[allow(missing_docs)]
12#[derive(Serialize, Deserialize, Debug, JsonSchema)]
13#[serde(rename_all = "camelCase", deny_unknown_fields)]
14pub struct ProjectsDeleteRequest {
15 pub ids: Vec<Uuid>,
17}
18
19pub(crate) async fn delete_projects(
20 client: &Client,
21 input: ProjectsDeleteRequest,
22) -> Result<ProjectsDeleteResponse, SecretsManagerError> {
23 let config = client.internal.get_api_configurations().await;
24 let res = config
25 .api_client
26 .projects_api()
27 .bulk_delete(Some(input.ids))
28 .await?;
29
30 ProjectsDeleteResponse::process_response(res)
31}
32
33#[allow(missing_docs)]
34#[derive(Serialize, Deserialize, Debug, JsonSchema)]
35#[serde(rename_all = "camelCase", deny_unknown_fields)]
36pub struct ProjectsDeleteResponse {
37 pub data: Vec<ProjectDeleteResponse>,
38}
39
40impl ProjectsDeleteResponse {
41 pub(crate) fn process_response(
42 response: BulkDeleteResponseModelListResponseModel,
43 ) -> Result<ProjectsDeleteResponse, SecretsManagerError> {
44 Ok(ProjectsDeleteResponse {
45 data: response
46 .data
47 .unwrap_or_default()
48 .into_iter()
49 .map(ProjectDeleteResponse::process_response)
50 .collect::<Result<_, _>>()?,
51 })
52 }
53}
54
55#[derive(Serialize, Deserialize, Debug, JsonSchema)]
56#[serde(rename_all = "camelCase", deny_unknown_fields)]
57pub struct ProjectDeleteResponse {
58 pub id: Uuid,
59 pub error: Option<String>,
60}
61
62impl ProjectDeleteResponse {
63 pub(crate) fn process_response(
64 response: BulkDeleteResponseModel,
65 ) -> Result<ProjectDeleteResponse, SecretsManagerError> {
66 Ok(ProjectDeleteResponse {
67 id: require!(response.id),
68 error: response.error,
69 })
70 }
71}