From 6ce88667c097603e1651557bb2813edb65aa35f6 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Mon, 11 Nov 2019 22:43:08 +0200 Subject: [PATCH] ui/sqlite3: add flag query support --- ui/src/sqlite3.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ui/src/sqlite3.rs b/ui/src/sqlite3.rs index fece920f..7a5b6796 100644 --- a/ui/src/sqlite3.rs +++ b/ui/src/sqlite3.rs @@ -418,6 +418,49 @@ pub fn query_to_sql(q: &Query) -> String { rec(q, s); s.push_str(") "); } + Flags(v) => { + let total = v.len(); + if total > 1 { + s.push_str("("); + } + for (i, f) in v.iter().enumerate() { + match f.as_str() { + "draft" => { + s.push_str(" (flags & 8 > 0) "); + } + "deleted" | "trashed" => { + s.push_str(" (flags & 6 > 0) "); + } + "flagged" => { + s.push_str(" (flags & 16 > 0) "); + } + "recent" => { + s.push_str(" (flags & 4 == 0) "); + } + "seen" | "read" => { + s.push_str(" (flags & 4 > 0) "); + } + "unseen" | "unread" => { + s.push_str(" (flags & 4 == 0) "); + } + "answered" | "replied" => { + s.push_str(" (flags & 2 > 0) "); + } + "unanswered" => { + s.push_str(" (flags & 2 == 0) "); + } + _ => { + continue; + } + } + if total > 1 && i != total - 1 { + s.push_str(" AND "); + } + } + if total > 1 { + s.push_str(") "); + } + } _ => {} } }