(
state: &Arc<ServerState>,
request: Request<DeleteServiceRequest>,
)
| 168 | } |
| 169 | |
| 170 | pub(super) async fn handle_delete_service( |
| 171 | state: &Arc<ServerState>, |
| 172 | request: Request<DeleteServiceRequest>, |
| 173 | ) -> Result<Response<DeleteServiceResponse>, Status> { |
| 174 | let req = request.into_inner(); |
| 175 | validate_endpoint_name("sandbox", &req.sandbox, MAX_SANDBOX_NAME_LEN)?; |
| 176 | validate_optional_endpoint_name("service", &req.service, MAX_SERVICE_NAME_LEN)?; |
| 177 | |
| 178 | let endpoint = get_service_endpoint(state, &req.sandbox, &req.service).await?; |
| 179 | let Some(endpoint) = endpoint else { |
| 180 | return Ok(Response::new(DeleteServiceResponse { deleted: false })); |
| 181 | }; |
| 182 | |
| 183 | let key = service_routing::endpoint_key(&req.sandbox, &req.service); |
| 184 | let deleted = state |
| 185 | .store |
| 186 | .delete_by_name(ServiceEndpoint::object_type(), &key) |
| 187 | .await |
| 188 | .map_err(|e| Status::internal(format!("delete endpoint failed: {e}")))?; |
| 189 | |
| 190 | if deleted { |
| 191 | service_routing::emit_service_endpoint_delete_event(&endpoint); |
| 192 | } |
| 193 | |
| 194 | Ok(Response::new(DeleteServiceResponse { deleted })) |
| 195 | } |
| 196 | |
| 197 | async fn get_service_endpoint( |
| 198 | state: &Arc<ServerState>, |
no test coverage detected