1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 17:14:08 +02:00

allow running db queries on sharded db

This commit is contained in:
Robin Appelman 2025-08-22 18:16:06 +02:00
commit 89280d9371
3 changed files with 73 additions and 11 deletions

View file

@ -35,6 +35,7 @@ pub enum HazeArgs {
filter: Option<String>,
root: bool,
command: Vec<String>,
index: Option<String>,
},
/// Remove all non-pinned instances
Clean,
@ -193,11 +194,23 @@ impl HazeArgs {
} else {
false
};
let index = if let Some(next) = args.peek() {
let all = next.as_ref() == "all";
let is_number = next.as_ref().chars().all(char::is_numeric);
if all || is_number {
args.next().map(Into::into)
} else {
None
}
} else {
None
};
let command = args.map(S::into).collect();
Ok(HazeArgs::Db {
filter,
root,
command,
index,
})
}
HazeCommand::Clean => Ok(HazeArgs::Clean),
@ -357,7 +370,8 @@ fn test_arg_parse() {
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: false,
command: Vec::new()
command: Vec::new(),
index: None,
}
);
assert_eq!(
@ -365,7 +379,8 @@ fn test_arg_parse() {
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: true,
command: Vec::new()
command: Vec::new(),
index: None,
}
);
assert_eq!(
@ -373,7 +388,8 @@ fn test_arg_parse() {
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: false,
command: vec!["select".to_string(), "1".to_string()]
command: vec!["select".to_string(), "1".to_string()],
index: None,
}
);
assert_eq!(
@ -385,7 +401,34 @@ fn test_arg_parse() {
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: true,
command: vec!["select 1".to_string()]
command: vec!["select 1".to_string()],
index: None,
}
);
assert_eq!(
HazeArgs::parse(
&[],
vec!["haze", "asdasd", "db", "root", "1", "select 1"].into_iter()
)
.unwrap(),
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: true,
command: vec!["select 1".to_string()],
index: Some("1".into()),
}
);
assert_eq!(
HazeArgs::parse(
&[],
vec!["haze", "asdasd", "db", "all", "select 1"].into_iter()
)
.unwrap(),
HazeArgs::Db {
filter: Some("asdasd".to_string()),
root: false,
command: vec!["select 1".to_string()],
index: Some("all".into()),
}
);
assert_eq!(