mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-03-15 00:36:33 +00:00
Implement FromProto trait for OrderBy enums.
This commit is contained in:
parent
666f34f6a2
commit
1a8e3238e9
@ -9,7 +9,6 @@ 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};
|
||||
|
||||
@ -278,19 +277,12 @@ impl DeviceService for Device {
|
||||
},
|
||||
};
|
||||
|
||||
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().from_proto(),
|
||||
req.order_by_desc,
|
||||
)
|
||||
.await
|
||||
|
@ -7,7 +7,6 @@ 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;
|
||||
|
||||
@ -237,18 +236,13 @@ impl GatewayService for Gateway {
|
||||
Some(req.search.to_string())
|
||||
},
|
||||
};
|
||||
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().from_proto(),
|
||||
req.order_by_desc,
|
||||
)
|
||||
.await
|
||||
|
@ -2,7 +2,7 @@ use chrono::{DateTime, Utc};
|
||||
|
||||
use crate::codec::Codec;
|
||||
use crate::storage::fields::{MeasurementKind, MulticastGroupSchedulingType};
|
||||
use crate::storage::{device::DeviceClass, metrics::Aggregation};
|
||||
use crate::storage::{device, device::DeviceClass, gateway, metrics::Aggregation};
|
||||
use chirpstack_api::{api, common};
|
||||
use lrwn::region::{CommonName, MacVersion, Revision};
|
||||
|
||||
@ -263,6 +263,27 @@ impl ToProto<common::DeviceClass> for DeviceClass {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromProto<device::OrderBy> for api::list_devices_request::OrderBy {
|
||||
fn from_proto(self) -> device::OrderBy {
|
||||
match self {
|
||||
Self::Name => device::OrderBy::Name,
|
||||
Self::DevEui => device::OrderBy::DevEui,
|
||||
Self::LastSeenAt => device::OrderBy::LastSeenAt,
|
||||
Self::DeviceProfileName => device::OrderBy::DeviceProfileName,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromProto<gateway::OrderBy> for api::list_gateways_request::OrderBy {
|
||||
fn from_proto(self) -> gateway::OrderBy {
|
||||
match self {
|
||||
Self::Name => gateway::OrderBy::Name,
|
||||
Self::GatewayId => gateway::OrderBy::GatewayId,
|
||||
Self::LastSeenAt => gateway::OrderBy::LastSeenAt,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn datetime_to_prost_timestamp(dt: &DateTime<Utc>) -> prost_types::Timestamp {
|
||||
let ts = dt.timestamp_nanos_opt().unwrap_or_default();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user