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

Method list

chirpstack/src/api/device.rs:242–340  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::ListDevicesRequest>,
    )

Source from the content-addressed store, hash-verified

240 }
241
242 async fn list(
243 &self,
244 request: Request<api::ListDevicesRequest>,
245 ) -> Result<Response<api::ListDevicesResponse>, Status> {
246 let req = request.get_ref();
247 let user_id: Option<Uuid> =
248 if let Some(AuthID::User(v)) = request.extensions().get::<AuthID>() {
249 Some(*v)
250 } else {
251 None
252 };
253 let app_id = Uuid::from_str(&req.application_id).map_err(|e| e.status())?;
254 let mg_id: Option<Uuid> = if req.multicast_group_id.is_empty() {
255 None
256 } else {
257 Some(Uuid::from_str(&req.multicast_group_id).map_err(|e| e.status())?)
258 };
259 let dp_id: Option<Uuid> = if req.device_profile_id.is_empty() {
260 None
261 } else {
262 Some(Uuid::from_str(&req.device_profile_id).map_err(|e| e.status())?)
263 };
264
265 self.validator
266 .validate(
267 request.extensions(),
268 validator::ValidateDevicesAccess::new(validator::Flag::List, app_id),
269 )
270 .await?;
271
272 if let Some(mg_id) = mg_id {
273 self.validator
274 .validate(
275 request.extensions(),
276 validator::ValidateMulticastGroupAccess::new(validator::Flag::Read, mg_id),
277 )
278 .await?;
279 }
280
281 let filters = device::Filters {
282 user_id,
283 application_id: Some(app_id),
284 multicast_group_id: mg_id,
285 device_profile_id: dp_id,
286 search: if req.search.is_empty() {
287 None
288 } else {
289 Some(req.search.to_string())
290 },
291 tags: req.tags.clone(),
292 };
293
294 let count = device::get_count(&filters).await.map_err(|e| e.status())?;
295 let items = device::list(
296 req.limit as i64,
297 req.offset as i64,
298 &filters,
299 req.order_by().from_proto(),

Callers 1

test_deviceFunction · 0.45

Calls 12

statusMethod · 0.80
to_stringMethod · 0.80
from_protoMethod · 0.80
iterMethod · 0.80
as_refMethod · 0.80
unwrapMethod · 0.80
insertMethod · 0.80
get_countFunction · 0.50
listFunction · 0.50
validateMethod · 0.45
into_hashmapMethod · 0.45

Tested by 1

test_deviceFunction · 0.36