vaultrs/identity/
entity.rs1use std::fmt;
2
3use crate::{
4 api::{
5 self,
6 identity::entity::{
7 requests::{
8 BatchDeleteRequest, CreateEntityByNameRequest, CreateEntityByNameRequestBuilder,
9 CreateEntityRequest, CreateEntityRequestBuilder, DeleteEntityByIdRequest,
10 DeleteEntityByNameRequest, ListEntitiesByIdRequest, ListEntitiesByNameRequest,
11 MergeEntitiesRequest, MergeEntitiesRequestBuilder, ReadEntityByIdRequest,
12 ReadEntityByNameRequest, UpdateEntityByIdRequest, UpdateEntityByIdRequestBuilder,
13 },
14 responses::{
15 CreateEntityResponse, ListEntitiesByIdResponse, ListEntitiesByNameResponse,
16 ReadEntityByIdResponse, ReadEntityByNameResponse,
17 },
18 },
19 },
20 client::Client,
21 error::ClientError,
22};
23
24pub async fn create(
28 client: &impl Client,
29 opts: Option<&mut CreateEntityRequestBuilder>,
30) -> Result<CreateEntityResponse, ClientError> {
31 let mut t = CreateEntityRequest::builder();
32 let endpoint = opts.unwrap_or(&mut t).build().unwrap();
33 api::exec_with_result(client, endpoint).await
34}
35
36pub async fn read_by_id(
40 client: &impl Client,
41 id: &str,
42) -> Result<ReadEntityByIdResponse, ClientError> {
43 let endpoint = ReadEntityByIdRequest::builder().id(id).build().unwrap();
44
45 api::exec_with_result(client, endpoint).await
46}
47
48pub async fn update_by_id(
52 client: &impl Client,
53 id: &str,
54 opts: Option<&mut UpdateEntityByIdRequestBuilder>,
55) -> Result<(), ClientError> {
56 let mut t = UpdateEntityByIdRequest::builder();
57 let endpoint = opts.unwrap_or(&mut t).id(id).build().unwrap();
58 api::exec_with_empty(client, endpoint).await
59}
60
61pub async fn delete_by_id(client: &impl Client, id: &str) -> Result<(), ClientError> {
65 let endpoint = DeleteEntityByIdRequest::builder().id(id).build().unwrap();
66 api::exec_with_empty(client, endpoint).await
67}
68
69pub async fn batch_delete<T: fmt::Debug + Into<Vec<String>>>(
73 client: &impl Client,
74 entity_ids: T,
75) -> Result<(), ClientError> {
76 let endpoint = BatchDeleteRequest::builder()
77 .entity_ids(entity_ids)
78 .build()
79 .unwrap();
80 api::exec_with_empty(client, endpoint).await
81}
82
83pub async fn list_by_id(client: &impl Client) -> Result<ListEntitiesByIdResponse, ClientError> {
87 let endpoint = ListEntitiesByIdRequest::builder().build().unwrap();
88 api::exec_with_result(client, endpoint).await
89}
90
91pub async fn create_or_update_by_name(
95 client: &impl Client,
96 name: &str,
97 opts: Option<&mut CreateEntityByNameRequestBuilder>,
98) -> Result<(), ClientError> {
99 let mut t = CreateEntityByNameRequest::builder();
100 let endpoint = opts.unwrap_or(&mut t).name(name).build().unwrap();
101 api::exec_with_empty(client, endpoint).await
102}
103
104pub async fn read_by_name(
108 client: &impl Client,
109 name: &str,
110) -> Result<ReadEntityByNameResponse, ClientError> {
111 let endpoint = ReadEntityByNameRequest::builder()
112 .name(name)
113 .build()
114 .unwrap();
115
116 api::exec_with_result(client, endpoint).await
117}
118
119pub async fn delete_by_name(client: &impl Client, name: &str) -> Result<(), ClientError> {
123 let endpoint = DeleteEntityByNameRequest::builder()
124 .name(name)
125 .build()
126 .unwrap();
127 api::exec_with_empty(client, endpoint).await
128}
129
130pub async fn list_by_name(client: &impl Client) -> Result<ListEntitiesByNameResponse, ClientError> {
134 let endpoint = ListEntitiesByNameRequest::builder().build().unwrap();
135 api::exec_with_result(client, endpoint).await
136}
137
138pub async fn merge(
142 client: &impl Client,
143 from_entity_ids: Vec<String>,
144 to_entity_id: String,
145 opts: Option<&mut MergeEntitiesRequestBuilder>,
146) -> Result<(), ClientError> {
147 let mut t = MergeEntitiesRequest::builder();
148 let endpoint = opts
149 .unwrap_or(&mut t)
150 .from_entity_ids(from_entity_ids)
151 .to_entity_id(to_entity_id)
152 .build()
153 .unwrap();
154 api::exec_with_empty(client, endpoint).await
155}