Refactor order_by match arms.

We can use match to update the q variable. There is also no need to
match for _, as this would hide unmatched OrderBy enum values.
This commit is contained in:
Orne Brocaar 2025-02-07 11:58:07 +00:00
parent 1a8e3238e9
commit 32e6a49e9e
3 changed files with 31 additions and 44 deletions

View File

@ -1368,7 +1368,7 @@ pub mod test {
multicast_group_id: "".into(),
limit: 10,
offset: 0,
order_by: 0,
order_by: api::list_devices_request::OrderBy::Name.into(),
order_by_desc: true,
},
);

View File

@ -658,34 +658,24 @@ pub async fn list(
.eq(fields::Uuid::from(multicast_group_id)),
);
}
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
q = match order_by_desc {
true => match order_by {
OrderBy::Name => q.order_by(device::dsl::name.desc()),
OrderBy::DevEui => q.order_by(device::dsl::dev_eui.desc()),
OrderBy::LastSeenAt => 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),
.then_order_by(device::dsl::name),
OrderBy::DeviceProfileName => q.order_by(device_profile::dsl::name.desc()),
},
false => match order_by {
OrderBy::Name => q.order_by(device::dsl::name),
OrderBy::DevEui => q.order_by(device::dsl::dev_eui),
OrderBy::LastSeenAt => q
.order_by(device::dsl::last_seen_at)
.then_order_by(device::dsl::name),
OrderBy::DeviceProfileName => q.order_by(device_profile::dsl::name),
},
};
q.limit(limit)

View File

@ -361,24 +361,21 @@ pub async fn list(
);
}
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
q = match order_by_desc {
true => match order_by {
OrderBy::Name => q.order_by(gateway::dsl::name.desc()),
OrderBy::GatewayId => q.order_by(gateway::dsl::gateway_id.desc()),
OrderBy::LastSeenAt => q
.order_by(gateway::dsl::last_seen_at.desc())
.then_order_by(gateway::dsl::name)
}
_ => q = q.order_by(gateway::dsl::name),
.then_order_by(gateway::dsl::name),
},
false => match order_by {
OrderBy::Name => q.order_by(gateway::dsl::name),
OrderBy::GatewayId => q.order_by(gateway::dsl::gateway_id),
OrderBy::LastSeenAt => q
.order_by(gateway::dsl::last_seen_at)
.then_order_by(gateway::dsl::name),
},
};
let items = q