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

Method list

chirpstack/src/api/multicast.rs:203–278  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::ListMulticastGroupsRequest>,
    )

Source from the content-addressed store, hash-verified

201 }
202
203 async fn list(
204 &self,
205 request: Request<api::ListMulticastGroupsRequest>,
206 ) -> Result<Response<api::ListMulticastGroupsResponse>, Status> {
207 let req = request.get_ref();
208 let tenant_id = if req.tenant_id.is_empty() {
209 None
210 } else {
211 Some(Uuid::from_str(&req.tenant_id).map_err(|e| e.status())?)
212 };
213 let app_id = if req.application_id.is_empty() {
214 None
215 } else {
216 Some(Uuid::from_str(&req.application_id).map_err(|e| e.status())?)
217 };
218 let dev_eui = if req.dev_eui.is_empty() {
219 None
220 } else {
221 Some(EUI64::from_str(&req.dev_eui).map_err(|e| e.status())?)
222 };
223
224 self.validator
225 .validate(
226 request.extensions(),
227 validator::ValidateMulticastGroupsAccess::new(
228 validator::Flag::List,
229 tenant_id,
230 app_id,
231 ),
232 )
233 .await?;
234
235 let filters = multicast::Filters {
236 tenant_id: None,
237 application_id: app_id,
238 dev_eui,
239 search: if req.search.is_empty() {
240 None
241 } else {
242 Some(req.search.to_string())
243 },
244 };
245
246 let count = multicast::get_count(&filters)
247 .await
248 .map_err(|e| e.status())?;
249 let items = multicast::list(req.limit as i64, req.offset as i64, &filters)
250 .await
251 .map_err(|e| e.status())?;
252
253 let mut resp = Response::new(api::ListMulticastGroupsResponse {
254 total_count: count as u32,
255 result: items
256 .iter()
257 .map(|mg| api::MulticastGroupListItem {
258 id: mg.id.to_string(),
259 created_at: Some(helpers::datetime_to_prost_timestamp(&mg.created_at)),
260 updated_at: Some(helpers::datetime_to_prost_timestamp(&mg.updated_at)),

Callers 1

test_multicast_groupFunction · 0.45

Calls 12

statusMethod · 0.80
to_stringMethod · 0.80
iterMethod · 0.80
to_protoMethod · 0.80
as_refMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
get_countFunction · 0.50
listFunction · 0.50
validateMethod · 0.45
intoMethod · 0.45

Tested by 1

test_multicast_groupFunction · 0.36