MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / update_relay_gateway

Method update_relay_gateway

chirpstack/src/api/gateway.rs:831–871  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::UpdateRelayGatewayRequest>,
    )

Source from the content-addressed store, hash-verified

829 }
830
831 async fn update_relay_gateway(
832 &self,
833 request: Request<api::UpdateRelayGatewayRequest>,
834 ) -> Result<Response<()>, Status> {
835 let req_relay = match &request.get_ref().relay_gateway {
836 Some(v) => v,
837 None => {
838 return Err(Status::invalid_argument("relay_gateway is missing"));
839 }
840 };
841 let tenant_id = Uuid::from_str(&req_relay.tenant_id).map_err(|e| e.status())?;
842 let relay_id = RelayId::from_str(&req_relay.relay_id).map_err(|e| e.status())?;
843
844 // The tenant_id is part of the relay PK.
845 self.validator
846 .validate(
847 request.extensions(),
848 validator::ValidateGatewaysAccess::new(validator::Flag::List, tenant_id),
849 )
850 .await?;
851
852 let _ = gateway::update_relay_gateway(gateway::RelayGateway {
853 relay_id,
854 tenant_id: tenant_id.into(),
855 name: req_relay.name.clone(),
856 description: req_relay.description.clone(),
857 stats_interval_secs: req_relay.stats_interval as i32,
858 region_config_id: req_relay.region_config_id.clone(),
859 ..Default::default()
860 })
861 .await
862 .map_err(|e| e.status())?;
863
864 let mut resp = Response::new(());
865 resp.metadata_mut()
866 .insert("x-log-tenant_id", req_relay.tenant_id.parse().unwrap());
867 resp.metadata_mut()
868 .insert("x-log-relay_id", req_relay.relay_id.parse().unwrap());
869
870 Ok(resp)
871 }
872
873 async fn delete_relay_gateway(
874 &self,

Callers 1

Calls 6

update_relay_gatewayFunction · 0.85
statusMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
validateMethod · 0.45
intoMethod · 0.45

Tested by 1