graphql: sort the groups before returning them

This commit is contained in:
Valentin Tolmer
2023-07-29 11:08:47 +02:00
committed by nitnelave
parent af49871801
commit e5bc06a617
2 changed files with 24 additions and 2 deletions

View File

@@ -130,11 +130,12 @@ impl UserListerBackendHandler for SqlBackendHandler {
.group_by(|(u, _)| u) .group_by(|(u, _)| u)
.into_iter() .into_iter()
.map(|(user, groups)| { .map(|(user, groups)| {
let groups: Vec<_> = groups let mut groups: Vec<_> = groups
.into_iter() .into_iter()
.flat_map(|(_, g)| g) .flat_map(|(_, g)| g)
.map(|g| GroupDetails::from(g.clone())) .map(|g| GroupDetails::from(g.clone()))
.collect(); .collect();
groups.sort_by(|g1, g2| g1.display_name.cmp(&g2.display_name));
UserAndGroups { UserAndGroups {
user: user.clone().into(), user: user.clone().into(),
groups: Some(groups), groups: Some(groups),

View File

@@ -299,7 +299,14 @@ impl<Handler: BackendHandler> User<Handler> {
.get_user_groups(&self.user.user_id) .get_user_groups(&self.user.user_id)
.instrument(span) .instrument(span)
.await .await
.map(|set| set.into_iter().map(Into::into).collect())?) .map(|set| {
let mut groups = set
.into_iter()
.map(Into::into)
.collect::<Vec<Group<Handler>>>();
groups.sort_by(|g1, g2| g1.display_name.cmp(&g2.display_name));
groups
})?)
} }
} }
@@ -524,6 +531,7 @@ mod tests {
uuid uuid
groups { groups {
id id
displayName
creationDate creationDate
uuid uuid
} }
@@ -549,6 +557,12 @@ mod tests {
creation_date: chrono::Utc.timestamp_nanos(42).naive_utc(), creation_date: chrono::Utc.timestamp_nanos(42).naive_utc(),
uuid: crate::uuid!("a1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8"), uuid: crate::uuid!("a1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8"),
}); });
groups.insert(GroupDetails {
group_id: GroupId(7),
display_name: "Jefferees".to_string(),
creation_date: chrono::Utc.timestamp_nanos(12).naive_utc(),
uuid: crate::uuid!("b1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8"),
});
mock.expect_get_user_groups() mock.expect_get_user_groups()
.with(eq(UserId::new("bob"))) .with(eq(UserId::new("bob")))
.return_once(|_| Ok(groups)); .return_once(|_| Ok(groups));
@@ -569,8 +583,15 @@ mod tests {
"uuid": "b1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8", "uuid": "b1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",
"groups": [{ "groups": [{
"id": 3, "id": 3,
"displayName": "Bobbersons",
"creationDate": "1970-01-01T00:00:00.000000042+00:00", "creationDate": "1970-01-01T00:00:00.000000042+00:00",
"uuid": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8" "uuid": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"
},
{
"id": 7,
"displayName": "Jefferees",
"creationDate": "1970-01-01T00:00:00.000000012+00:00",
"uuid": "b1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"
}] }]
} }
}), }),