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

Method list_relay_gateways

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

Source from the content-addressed store, hash-verified

900 }
901
902 async fn list_relay_gateways(
903 &self,
904 request: Request<api::ListRelayGatewaysRequest>,
905 ) -> Result<Response<api::ListRelayGatewaysResponse>, Status> {
906 let req = request.get_ref();
907 let tenant_id = if req.tenant_id.is_empty() {
908 None
909 } else {
910 Some(Uuid::from_str(&req.tenant_id).map_err(|e| e.status())?)
911 };
912
913 self.validator
914 .validate(
915 request.extensions(),
916 validator::ValidateGatewaysAccess::new(
917 validator::Flag::List,
918 tenant_id.unwrap_or(Uuid::nil()),
919 ),
920 )
921 .await?;
922
923 let filters = gateway::RelayGatewayFilters { tenant_id };
924
925 let count = gateway::get_relay_gateway_count(&filters)
926 .await
927 .map_err(|e| e.status())?;
928 let result = gateway::list_relay_gateways(req.limit as i64, req.offset as i64, &filters)
929 .await
930 .map_err(|e| e.status())?;
931
932 let mut resp = Response::new(api::ListRelayGatewaysResponse {
933 total_count: count as u32,
934 result: result
935 .iter()
936 .map(|r| api::RelayGatewayListItem {
937 tenant_id: r.tenant_id.to_string(),
938 relay_id: r.relay_id.to_string(),
939 name: r.name.clone(),
940 description: r.description.clone(),
941 created_at: Some(helpers::datetime_to_prost_timestamp(&r.created_at)),
942 updated_at: Some(helpers::datetime_to_prost_timestamp(&r.updated_at)),
943 last_seen_at: r
944 .last_seen_at
945 .as_ref()
946 .map(helpers::datetime_to_prost_timestamp),
947 state: {
948 if let Some(ts) = r.last_seen_at {
949 if (Utc::now() - ts)
950 > Duration::try_seconds((r.stats_interval_secs * 2).into())
951 .unwrap_or_default()
952 {
953 api::GatewayState::Offline
954 } else {
955 api::GatewayState::Online
956 }
957 } else {
958 api::GatewayState::NeverSeen
959 }

Callers 1

Calls 11

get_relay_gateway_countFunction · 0.85
list_relay_gatewaysFunction · 0.85
statusMethod · 0.80
iterMethod · 0.80
to_stringMethod · 0.80
as_refMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
validateMethod · 0.45
intoMethod · 0.45

Tested by 1