mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-03-15 00:36:33 +00:00
Merge pull request #2 from ttulka/refactor_api_to_use_enums
Improve enum usage and formatting
This commit is contained in:
commit
802b2e7f02
@ -9,6 +9,7 @@ use tonic::{Request, Response, Status};
|
||||
use uuid::Uuid;
|
||||
|
||||
use chirpstack_api::api::device_service_server::DeviceService;
|
||||
use chirpstack_api::api::list_devices_request::OrderBy;
|
||||
use chirpstack_api::{api, common, internal};
|
||||
use lrwn::{AES128Key, DevAddr, EUI64};
|
||||
|
||||
@ -277,17 +278,23 @@ impl DeviceService for Device {
|
||||
},
|
||||
};
|
||||
|
||||
let order_by = match req.order_by {
|
||||
1 => device::OrderBy::DevEui,
|
||||
2 => device::OrderBy::LastSeenAt,
|
||||
3 => device::OrderBy::DeviceProfileName,
|
||||
_ => device::OrderBy::Name,
|
||||
let order_by = match req.order_by() {
|
||||
OrderBy::Name => device::OrderBy::Name,
|
||||
OrderBy::DevEui => device::OrderBy::DevEui,
|
||||
OrderBy::LastSeenAt => device::OrderBy::LastSeenAt,
|
||||
OrderBy::DeviceProfileName => device::OrderBy::DeviceProfileName,
|
||||
};
|
||||
|
||||
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, order_by, req.order_by_desc)
|
||||
.await
|
||||
.map_err(|e| e.status())?;
|
||||
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())?;
|
||||
|
||||
let mut resp = Response::new(api::ListDevicesResponse {
|
||||
total_count: count as u32,
|
||||
|
@ -7,6 +7,7 @@ use tonic::{Request, Response, Status};
|
||||
use uuid::Uuid;
|
||||
|
||||
use chirpstack_api::api::gateway_service_server::GatewayService;
|
||||
use chirpstack_api::api::list_gateways_request::OrderBy;
|
||||
use chirpstack_api::{api, common};
|
||||
use lrwn::EUI64;
|
||||
|
||||
@ -236,16 +237,22 @@ impl GatewayService for Gateway {
|
||||
Some(req.search.to_string())
|
||||
},
|
||||
};
|
||||
let order_by = match req.order_by{
|
||||
1 => gateway::OrderBy::GatewayId,
|
||||
2 => gateway::OrderBy::LastSeenAt,
|
||||
_ => gateway::OrderBy::Name,
|
||||
let order_by = match req.order_by() {
|
||||
OrderBy::Name => gateway::OrderBy::Name,
|
||||
OrderBy::GatewayId => gateway::OrderBy::GatewayId,
|
||||
OrderBy::LastSeenAt => gateway::OrderBy::LastSeenAt,
|
||||
};
|
||||
|
||||
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, order_by, req.order_by_desc)
|
||||
.await
|
||||
.map_err(|e| e.status())?;
|
||||
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())?;
|
||||
|
||||
let mut resp = Response::new(api::ListGatewaysResponse {
|
||||
total_count: count as u32,
|
||||
|
@ -216,12 +216,13 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub enum OrderBy {
|
||||
#[default]
|
||||
Name,
|
||||
DevEui,
|
||||
LastSeenAt,
|
||||
DeviceProfileName
|
||||
DeviceProfileName,
|
||||
}
|
||||
|
||||
#[derive(QueryableByName, PartialEq, Eq, Debug)]
|
||||
@ -659,29 +660,33 @@ pub async fn list(
|
||||
}
|
||||
let descending: bool = order_by_desc;
|
||||
|
||||
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)
|
||||
};
|
||||
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)
|
||||
@ -1039,7 +1044,15 @@ 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, 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()
|
||||
|
@ -110,8 +110,9 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub enum OrderBy {
|
||||
#[default]
|
||||
Name,
|
||||
GatewayId,
|
||||
LastSeenAt,
|
||||
@ -360,24 +361,24 @@ pub async fn list(
|
||||
);
|
||||
}
|
||||
|
||||
let descending: bool = order_by_desc;
|
||||
let descending: bool = order_by_desc;
|
||||
|
||||
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)
|
||||
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
|
||||
@ -759,7 +760,15 @@ 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, 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.gws
|
||||
.iter()
|
||||
|
Loading…
x
Reference in New Issue
Block a user