diff --git a/chirpstack/src/api/device.rs b/chirpstack/src/api/device.rs index 81463196..e2ac539e 100644 --- a/chirpstack/src/api/device.rs +++ b/chirpstack/src/api/device.rs @@ -281,12 +281,11 @@ impl DeviceService for Device { 1 => device::OrderBy::DevEui, 2 => device::OrderBy::LastSeenAt, 3 => device::OrderBy::DeviceProfileName, - _ => device::OrderBy::Name, - + _ => device::OrderBy::Name, }; let count = device::get_count(&filters).await.map_err(|e| e.status())?; - let items = device::list(req.limit as i64, req.offset as i64, &filters, Some(order_by), req.order_by_desc) + let items = device::list(req.limit as i64, req.offset as i64, &filters, order_by, req.order_by_desc) .await .map_err(|e| e.status())?; diff --git a/chirpstack/src/api/gateway.rs b/chirpstack/src/api/gateway.rs index fd4cf29c..ca7f11e5 100644 --- a/chirpstack/src/api/gateway.rs +++ b/chirpstack/src/api/gateway.rs @@ -243,7 +243,7 @@ impl GatewayService for Gateway { }; let count = gateway::get_count(&filters).await.map_err(|e| e.status())?; - let result = gateway::list(req.limit as i64, req.offset as i64, &filters, Some(order_by), req.order_by_desc) + let result = gateway::list(req.limit as i64, req.offset as i64, &filters, order_by, req.order_by_desc) .await .map_err(|e| e.status())?; diff --git a/chirpstack/src/storage/device.rs b/chirpstack/src/storage/device.rs index acd18992..06dc35b1 100644 --- a/chirpstack/src/storage/device.rs +++ b/chirpstack/src/storage/device.rs @@ -614,7 +614,7 @@ pub async fn list( limit: i64, offset: i64, filters: &Filters, - order_by: Option, + order_by: OrderBy, order_by_desc: bool, ) -> Result, Error> { let mut q = device::dsl::device @@ -659,33 +659,29 @@ pub async fn list( } let descending: bool = order_by_desc; - if let Some(order) = order_by { - match order{ - OrderBy::Name if !descending => - q = q.order_by(device::dsl::name), - OrderBy::Name if descending => - q = q.order_by(device::dsl::name.desc()), - OrderBy::DevEui if !descending => - q = q.order_by(device::dsl::dev_eui), - OrderBy::DevEui if descending => - q = q.order_by(device::dsl::dev_eui.desc()), - OrderBy::LastSeenAt if !descending => - q = q.order_by(device::dsl::last_seen_at) - .then_order_by(device::dsl::name), - OrderBy::LastSeenAt if descending => - q = q.order_by(device::dsl::last_seen_at.desc()) - .then_order_by(device::dsl::name), - OrderBy::DeviceProfileName if !descending => - q = q.order_by(device_profile::dsl::name.asc()) - .then_order_by(device::dsl::name), - OrderBy::DeviceProfileName if descending => - q = q.order_by(device_profile::dsl::name.desc()) - .then_order_by(device::dsl::name), - _ => q = q.order_by(device::dsl::name) - }; - } else { - q = q.order_by(device::dsl::name) - }; + match order_by{ + OrderBy::Name if !descending => + q = q.order_by(device::dsl::name), + OrderBy::Name if descending => + q = q.order_by(device::dsl::name.desc()), + OrderBy::DevEui if !descending => + q = q.order_by(device::dsl::dev_eui), + OrderBy::DevEui if descending => + q = q.order_by(device::dsl::dev_eui.desc()), + OrderBy::LastSeenAt if !descending => + q = q.order_by(device::dsl::last_seen_at) + .then_order_by(device::dsl::name), + OrderBy::LastSeenAt if descending => + q = q.order_by(device::dsl::last_seen_at.desc()) + .then_order_by(device::dsl::name), + OrderBy::DeviceProfileName if !descending => + q = q.order_by(device_profile::dsl::name.asc()) + .then_order_by(device::dsl::name), + OrderBy::DeviceProfileName if descending => + q = q.order_by(device_profile::dsl::name.desc()) + .then_order_by(device::dsl::name), + _ => q = q.order_by(device::dsl::name) + }; q.limit(limit) .offset(offset) @@ -1043,7 +1039,7 @@ pub mod test { let count = get_count(&tst.filters).await.unwrap() as usize; assert_eq!(tst.count, count); - let items = list(tst.limit, tst.offset, &tst.filters, Some(tst.order), tst.order_by_desc).await.unwrap(); + let items = list(tst.limit, tst.offset, &tst.filters, tst.order, tst.order_by_desc).await.unwrap(); assert_eq!( tst.devs .iter() @@ -1054,7 +1050,6 @@ pub mod test { .map(|d| d.dev_eui.to_string()) .collect::() ); - } // delete diff --git a/chirpstack/src/storage/gateway.rs b/chirpstack/src/storage/gateway.rs index d1eba20f..b2edfb2e 100644 --- a/chirpstack/src/storage/gateway.rs +++ b/chirpstack/src/storage/gateway.rs @@ -316,7 +316,7 @@ pub async fn list( limit: i64, offset: i64, filters: &Filters, - order_by: Option, + order_by: OrderBy, order_by_desc: bool, ) -> Result, Error> { let mut q = gateway::dsl::gateway @@ -362,26 +362,22 @@ pub async fn list( let descending: bool = order_by_desc; - if let Some(order) = order_by { - match order { - OrderBy::Name if !descending=> - q = q.order_by(gateway::dsl::name), - OrderBy::Name if descending => - q = q.order_by(gateway::dsl::name.desc()), - OrderBy::GatewayId if !descending => - q = q.order_by(gateway::dsl::gateway_id), - OrderBy::GatewayId if descending => - q = q.order_by(gateway::dsl::gateway_id.desc()), - OrderBy::LastSeenAt if !descending => - q = q.order_by(gateway::dsl::last_seen_at) - .then_order_by(gateway::dsl::name), - OrderBy::LastSeenAt if descending => - q = q.order_by(gateway::dsl::last_seen_at.desc()) - .then_order_by(gateway::dsl::name), - _ => q = q.order_by(gateway::dsl::name) - }; - } else { - q = q.order_by(gateway::dsl::name) + match order_by { + OrderBy::Name if !descending=> + q = q.order_by(gateway::dsl::name), + OrderBy::Name if descending => + q = q.order_by(gateway::dsl::name.desc()), + OrderBy::GatewayId if !descending => + q = q.order_by(gateway::dsl::gateway_id), + OrderBy::GatewayId if descending => + q = q.order_by(gateway::dsl::gateway_id.desc()), + OrderBy::LastSeenAt if !descending => + q = q.order_by(gateway::dsl::last_seen_at) + .then_order_by(gateway::dsl::name), + OrderBy::LastSeenAt if descending => + q = q.order_by(gateway::dsl::last_seen_at.desc()) + .then_order_by(gateway::dsl::name), + _ => q = q.order_by(gateway::dsl::name) }; let items = q @@ -554,7 +550,7 @@ pub mod test { count: usize, limit: i64, offset: i64, - order: Option, + order: OrderBy, order_by_desc: bool, } @@ -637,7 +633,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -650,7 +646,7 @@ pub mod test { count: 0, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -663,7 +659,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -676,7 +672,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -689,7 +685,7 @@ pub mod test { count: 0, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -702,7 +698,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -715,7 +711,7 @@ pub mod test { count: 0, limit: 10, offset: 0, - order: None, + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -728,7 +724,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: Some(OrderBy::Name), + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -741,7 +737,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: Some(OrderBy::Name), + order: OrderBy::Name, order_by_desc: false, }, FilterTest { @@ -754,7 +750,7 @@ pub mod test { count: 1, limit: 10, offset: 0, - order: Some(OrderBy::Name), + order: OrderBy::Name, order_by_desc: true, }, ];