Add iterators over * for stats, dumps, tasks, settings, and indexes; change documents impl to prevent duplication

This commit is contained in:
Phillip Davis 2022-07-04 21:07:47 -04:00
parent 1dc3724c1f
commit c251b527b0
No known key found for this signature in database
GPG Key ID: EF6116274E70E43F

View File

@ -92,13 +92,77 @@ impl HeedAuthStore {
Action::into_enum_iter().collect()
} else if key.actions.contains(&Action::DocumentsAll) {
// if key.actions.contains.DocumentsAll add all actions related to documents.
let mut actions = key.actions.clone();
actions.append(&mut vec![
Action::DocumentsAdd,
Action::DocumentsGet,
Action::DocumentsDelete,
]);
actions
key.actions.iter()
.cloned()
.filter(|action|{ // Prevents duplicate entries in the actions vector
*action != Action::DocumentsAdd &&
*action != Action::DocumentsDelete &&
*action != Action::DocumentsGet
})
.chain(vec![
Action::DocumentsAdd,
Action::DocumentsDelete,
Action::DocumentsGet
])
.collect()
} else if key.actions.contains(&Action::IndexesAll) {
key.actions.iter()
.cloned()
.filter(|action|{
*action != Action::IndexesAdd &&
*action != Action::IndexesGet &&
*action != Action::IndexesDelete &&
*action != Action::IndexesUpdate
})
.chain(vec![
Action::IndexesAdd,
Action::IndexesGet,
Action::IndexesDelete,
Action::IndexesUpdate
])
.collect()
} else if key.actions.contains(&Action::SettingsAll) {
key.actions.iter()
.cloned()
.filter(|action|{
*action != Action::SettingsGet &&
*action != Action::SettingsUpdate
})
.chain(vec![
Action::SettingsGet,
Action::SettingsUpdate
])
.collect()
} else if key.actions.contains(&Action::TasksAll) {
key.actions.iter()
.cloned()
.filter(|action|{
*action != Action::TasksGet
})
.chain(vec![
Action::TasksGet
])
.collect()
} else if key.actions.contains(&Action::DumpsAll) {
key.actions.iter()
.cloned()
.filter(|action|{
*action != Action::DumpsCreate
})
.chain(vec![
Action::DumpsCreate
])
.collect()
} else if key.actions.contains(&Action::StatsAll) {
key.actions.iter()
.cloned()
.filter(|action|{
*action != Action::StatsGet
})
.chain(vec![
Action::StatsGet
])
.collect()
} else {
key.actions.clone()
};