treewide: complete book management interface

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If5a21f16221f3c56a8008e139f93edc46a6a6964
This commit is contained in:
raf 2026-02-04 23:14:37 +03:00
commit 2f31242442
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
23 changed files with 1693 additions and 126 deletions

View file

@ -124,12 +124,11 @@ fn parse_date_value(s: &str) -> Option<DateValue> {
"last-year" | "lastyear" => Some(DateValue::LastYear),
other => {
// Try to parse "last-Nd" format (e.g., "last-7d", "last-30d")
if let Some(rest) = other.strip_prefix("last-") {
if let Some(days_str) = rest.strip_suffix('d') {
if let Ok(days) = days_str.parse::<u32>() {
return Some(DateValue::DaysAgo(days));
}
}
if let Some(rest) = other.strip_prefix("last-")
&& let Some(days_str) = rest.strip_suffix('d')
&& let Ok(days) = days_str.parse::<u32>()
{
return Some(DateValue::DaysAgo(days));
}
None
}
@ -237,13 +236,13 @@ fn field_match(input: &mut &str) -> ModalResult<SearchQuery> {
}
// Check for date queries on created/modified fields
if field == "created" || field == "modified" {
if let Some(date_val) = parse_date_value(&value) {
return SearchQuery::DateQuery {
field,
value: date_val,
};
}
if (field == "created" || field == "modified")
&& let Some(date_val) = parse_date_value(&value)
{
return SearchQuery::DateQuery {
field,
value: date_val,
};
}
// Default: simple field match