Add Database::set_user_known_bash_tags()

This commit is contained in:
Oliver Hamlet
2026-01-02 15:30:40 +00:00
parent 2fe107d66b
commit db97a0786a
10 changed files with 92 additions and 2 deletions
+9 -2
View File
@@ -70,8 +70,15 @@ std::vector<std::string> Database::GetKnownBashTags() const {
std::vector<std::string> Database::GetUserKnownBashTags() const {
try {
return convert<std::string>(
database_->user_known_bash_tags());
return convert<std::string>(database_->user_known_bash_tags());
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
}
}
void Database::SetUserKnownBashTags(const std::vector<std::string>& bashTags) {
try {
return database_->set_user_known_bash_tags(convert(bashTags));
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
}
+2
View File
@@ -32,6 +32,8 @@ public:
std::vector<std::string> GetUserKnownBashTags() const override;
void SetUserKnownBashTags(const std::vector<std::string>& bashTags) override;
std::vector<Message> GetGeneralMessages(
bool evaluateConditions = false) const override;
+9
View File
@@ -120,6 +120,15 @@ impl Database {
.to_vec())
}
pub fn set_user_known_bash_tags(&self, bash_tags: Vec<String>) -> Result<(), VerboseError> {
self.0
.write()
.map_err(DatabaseLockPoisonError::from)?
.set_user_known_bash_tags(bash_tags);
Ok(())
}
pub fn general_messages(
&self,
evaluate_conditions: bool,
+2
View File
@@ -272,6 +272,8 @@ mod ffi {
pub fn user_known_bash_tags(&self) -> Result<Vec<String>>;
pub fn set_user_known_bash_tags(&self, bash_tags: Vec<String>) -> Result<()>;
pub fn general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
pub fn groups(&self, include_user_metadata: bool) -> Result<Vec<Group>>;
@@ -502,6 +502,23 @@ TEST_P(DatabaseInterfaceTest,
EXPECT_EQ(expectedTags, tags);
}
TEST_P(DatabaseInterfaceTest,
setUserKnownBashTagsShouldReplaceAllKnownBashTagsInTheUserlist) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());
ASSERT_NO_THROW(handle_->GetDatabase().LoadMasterlist(masterlistPath));
ASSERT_NO_THROW(handle_->GetDatabase().LoadUserlist(userlistPath_));
std::vector<std::string> tags({
"Filter",
});
handle_->GetDatabase().SetUserKnownBashTags({"Filter"});
EXPECT_EQ(tags, handle_->GetDatabase().GetUserKnownBashTags());
}
TEST_P(DatabaseInterfaceTest,
getGeneralMessagesShouldGetGeneralMessagesFromTheMasterlistAndUserlist) {
ASSERT_NO_THROW(GenerateMasterlist());