sort lists by name

This commit is contained in:
mbecker20
2024-06-08 02:21:32 -07:00
parent 8a8dede5db
commit 9d116f56cb
6 changed files with 49 additions and 25 deletions

View File

@@ -441,10 +441,11 @@ impl Resolve<GetAvailableSecrets, User> for State {
PermissionLevel::Read,
)
.await?;
let secrets = periphery_client(&server)?
let mut secrets = periphery_client(&server)?
.request(api::GetSecrets {})
.await
.context("failed to get accounts from periphery")?;
secrets.sort();
Ok(secrets)
}
}

View File

@@ -1,9 +1,10 @@
use anyhow::Context;
use mongo_indexed::doc;
use monitor_client::{
api::read::{GetTag, ListTags},
entities::{tag::Tag, user::User},
};
use mungos::find::find_collect;
use mungos::{find::find_collect, mongodb::options::FindOptions};
use resolver_api::Resolve;
use crate::{
@@ -27,8 +28,12 @@ impl Resolve<ListTags, User> for State {
ListTags { query }: ListTags,
_: User,
) -> anyhow::Result<Vec<Tag>> {
find_collect(&db_client().await.tags, query, None)
.await
.context("failed to get tags from db")
find_collect(
&db_client().await.tags,
query,
FindOptions::builder().sort(doc! { "name": 1 }).build(),
)
.await
.context("failed to get tags from db")
}
}

View File

@@ -8,7 +8,9 @@ use monitor_client::{
entities::user::{User, UserConfig},
};
use mungos::{
by_id::find_one_by_id, find::find_collect, mongodb::bson::doc,
by_id::find_one_by_id,
find::find_collect,
mongodb::{bson::doc, options::FindOptions},
};
use resolver_api::Resolve;
@@ -47,10 +49,13 @@ impl Resolve<ListUsers, User> for State {
if !user.admin {
return Err(anyhow!("this route is only accessable by admins"));
}
let mut users =
find_collect(&db_client().await.users, None, None)
.await
.context("failed to pull users from db")?;
let mut users = find_collect(
&db_client().await.users,
None,
FindOptions::builder().sort(doc! { "username": 1 }).build(),
)
.await
.context("failed to pull users from db")?;
users.iter_mut().for_each(|user| user.sanitize());
Ok(users)
}
@@ -65,7 +70,7 @@ impl Resolve<ListApiKeys, User> for State {
let api_keys = find_collect(
&db_client().await.api_keys,
doc! { "user_id": &user.id },
None,
FindOptions::builder().sort(doc! { "name": 1 }).build(),
)
.await
.context("failed to query db for api keys")?

View File

@@ -10,7 +10,7 @@ use monitor_client::{
};
use mungos::{
find::find_collect,
mongodb::bson::{doc, oid::ObjectId, Document},
mongodb::{bson::{doc, oid::ObjectId, Document}, options::FindOptions},
};
use resolver_api::Resolve;
@@ -51,8 +51,12 @@ impl Resolve<ListUserGroups, User> for State {
if !user.admin {
filter.insert("users", &user.id);
}
find_collect(&db_client().await.user_groups, filter, None)
.await
.context("failed to query db for UserGroups")
find_collect(
&db_client().await.user_groups,
filter,
FindOptions::builder().sort(doc! { "name": 1 }).build(),
)
.await
.context("failed to query db for UserGroups")
}
}

View File

@@ -1,4 +1,5 @@
use anyhow::Context;
use mongo_indexed::doc;
use monitor_client::{
api::read::{
GetVariable, GetVariableResponse, ListVariables,
@@ -6,7 +7,7 @@ use monitor_client::{
},
entities::user::User,
};
use mungos::find::find_collect;
use mungos::{find::find_collect, mongodb::options::FindOptions};
use resolver_api::Resolve;
use crate::{
@@ -31,10 +32,13 @@ impl Resolve<ListVariables, User> for State {
ListVariables {}: ListVariables,
_: User,
) -> anyhow::Result<ListVariablesResponse> {
let variables =
find_collect(&db_client().await.variables, None, None)
.await
.context("failed to query db for variables")?;
let variables = find_collect(
&db_client().await.variables,
None,
FindOptions::builder().sort(doc! { "name": 1 }).build(),
)
.await
.context("failed to query db for variables")?;
Ok(ListVariablesResponse {
variables,
secrets: core_config().secrets.keys().cloned().collect(),

View File

@@ -19,6 +19,7 @@ use mungos::{
find::find_collect,
mongodb::{
bson::{doc, oid::ObjectId, to_document, Document},
options::FindOptions,
Collection,
},
};
@@ -270,11 +271,15 @@ async fn list_full_for_user_using_document<T: MonitorResource>(
.collect::<Vec<_>>();
filters.insert("_id", doc! { "$in": ids });
}
find_collect(T::coll().await, filters, None)
.await
.with_context(|| {
format!("failed to pull {}s from mongo", T::resource_type())
})
find_collect(
T::coll().await,
filters,
FindOptions::builder().sort(doc! { "name": 1 }).build(),
)
.await
.with_context(|| {
format!("failed to pull {}s from mongo", T::resource_type())
})
}
pub async fn get_id_to_resource_map<T: MonitorResource>(