Skip to content

Commit 429c5b4

Browse files
committed
update and update identifier
1 parent 32801ae commit 429c5b4

23 files changed

+2882
-19
lines changed

proto/entity.proto

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,39 @@ message GetEntityResponse {
5858
EntityModel data = 2;
5959
}
6060

61+
message UpdateEntityRequest {
62+
string entity_id = 1;
63+
string name = 2;
64+
}
65+
66+
message UpdateEntityResponse {
67+
bool status = 1;
68+
EntityModel data = 2;
69+
}
70+
71+
message PutEntityIdentifierRequest {
72+
string entity_id = 1;
73+
string identifier = 2;
74+
}
75+
76+
message PutEntityIdentifierResponse {
77+
bool status = 1;
78+
EntityModel data = 2;
79+
}
80+
81+
message DeleteEntityRequest {
82+
string entity_id = 1;
83+
}
84+
85+
message DeleteEntityResponse {
86+
bool status = 1;
87+
}
6188

6289
service EnttyService {
6390
rpc Paginate(EntityPaginateRequest) returns (EntityPaginateResponse);
6491
rpc StoreEntity(StoreEntityRequest) returns (StoreEntityResponse);
6592
rpc GetEntity(GetEntityRequest) returns(GetEntityResponse);
93+
rpc UpdateEntity(UpdateEntityRequest) returns(UpdateEntityResponse);
94+
rpc PutEntityIdentifier(PutEntityIdentifierRequest) returns (PutEntityIdentifierResponse);
95+
rpc DeleteEntity(DeleteEntityRequest) returns (DeleteEntityResponse);
6696
}

src/api/entity_api.rs

Lines changed: 115 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use crate::api::proto::entity::entity_paginate_response::{EntityPaginateData, EntityPagination};
22
use crate::api::proto::entity::entty_service_server::EnttyService;
33
use crate::api::proto::entity::{
4-
EntityPaginateRequest, EntityPaginateResponse, GetEntityRequest, GetEntityResponse,
5-
StoreEntityRequest, StoreEntityResponse,
4+
DeleteEntityRequest, DeleteEntityResponse, EntityPaginateRequest, EntityPaginateResponse, GetEntityRequest, GetEntityResponse, PutEntityIdentifierRequest, PutEntityIdentifierResponse, StoreEntityRequest, StoreEntityResponse, UpdateEntityRequest, UpdateEntityResponse
65
};
76
use crate::avored_state::AvoRedState;
87
use crate::error::Error::Tonic;
@@ -115,11 +114,11 @@ impl EnttyService for EntityApi {
115114
.await
116115
{
117116
Ok(entity_model) => {
118-
let get_admin_user_response = GetEntityResponse {
117+
let get_entity_response = GetEntityResponse {
119118
status: true,
120119
data: Some(entity_model),
121120
};
122-
let res = Response::new(get_admin_user_response);
121+
let res = Response::new(get_entity_response);
123122
Ok(res)
124123
}
125124
Err(e) => match e {
@@ -128,4 +127,116 @@ impl EnttyService for EntityApi {
128127
},
129128
}
130129
}
130+
131+
async fn update_entity(
132+
&self,
133+
request: Request<UpdateEntityRequest>,
134+
) -> Result<Response<UpdateEntityResponse>, Status> {
135+
println!("->> {:<12} - update_entity", "gRPC_Entity_Service");
136+
137+
let claims = request.get_token_claim()?;
138+
139+
let logged_in_user = claims.admin_user_model;
140+
logged_in_user
141+
.check_user_has_resouce_access(
142+
&self.state.admin_user_service,
143+
String::from("update_entity"),
144+
)
145+
.await?;
146+
147+
let req = request.into_inner();
148+
149+
match self
150+
.state
151+
.entity_service
152+
.update_entity(req, logged_in_user.email, &self.state.db)
153+
.await
154+
{
155+
Ok(entity_response) => {
156+
Ok(Response::new(entity_response))
157+
}
158+
Err(e) => match e {
159+
Tonic(status) => Err(*status),
160+
_ => Err(Status::internal(e.to_string())),
161+
},
162+
}
163+
}
164+
165+
async fn put_entity_identifier(
166+
&self,
167+
request: Request<PutEntityIdentifierRequest>,
168+
) -> Result<Response<PutEntityIdentifierResponse>, Status> {
169+
println!(
170+
"->> {:<12} - put_entity_identifier",
171+
"gRPC_Entity_Service"
172+
);
173+
174+
let claims = request.get_token_claim()?;
175+
let logged_in_user = claims.admin_user_model;
176+
logged_in_user
177+
.check_user_has_resouce_access(
178+
&self.state.admin_user_service,
179+
String::from("put_entiy_identifier"),
180+
)
181+
.await?;
182+
183+
let user_locale = logged_in_user.locale.clone();
184+
let req = request.into_inner();
185+
req.validate(&self.state, user_locale).await?;
186+
187+
match self
188+
.state
189+
.entity_service
190+
.put_entity_identifier(req, claims.email, &self.state.db)
191+
.await
192+
{
193+
Ok(reply) => {
194+
let res = Response::new(reply);
195+
196+
Ok(res)
197+
}
198+
Err(e) => match e {
199+
Tonic(status) => Err(*status),
200+
_ => Err(Status::internal(e.to_string())),
201+
},
202+
}
203+
}
204+
205+
async fn delete_entity(
206+
&self,
207+
request: Request<DeleteEntityRequest>,
208+
) -> Result<Response<DeleteEntityResponse>, Status> {
209+
println!("->> {:<12} - delete_entity", "gRPC_entity_Service");
210+
211+
let claims = request.get_token_claim()?;
212+
let logged_in_user = claims.admin_user_model;
213+
logged_in_user
214+
.check_user_has_resouce_access(
215+
&self.state.admin_user_service,
216+
String::from("delete_entity"),
217+
)
218+
.await?;
219+
220+
let user_locale = logged_in_user.locale.clone();
221+
let req = request.into_inner();
222+
req.validate(user_locale)?;
223+
224+
match self
225+
.state
226+
.entity_service
227+
.delete_entity(req, &self.state.db)
228+
.await
229+
{
230+
Ok(reply) => {
231+
let res = Response::new(reply);
232+
233+
Ok(res)
234+
}
235+
Err(e) => match e {
236+
Tonic(status) => Err(*status),
237+
_ => Err(Status::internal(e.to_string())),
238+
},
239+
}
240+
}
241+
131242
}

0 commit comments

Comments
 (0)