From 4dbb8998f840a771949ed30f9f2b652713edd0f9 Mon Sep 17 00:00:00 2001 From: "Jakob L. Kreuze" Date: Thu, 28 May 2020 18:12:46 -0400 Subject: Implement initial pagination. --- src/database.rs | 43 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 23 deletions(-) (limited to 'src/database.rs') diff --git a/src/database.rs b/src/database.rs index bd195f2..61a51cb 100644 --- a/src/database.rs +++ b/src/database.rs @@ -198,29 +198,26 @@ impl TagDatabase { ) }; - let query = if let (Some(id), Some(n)) = (q.last_id, q.limit) { - format!( - "SELECT id, blake2, filename, orig_dir - FROM images - {union} - WHERE id > {last_id} - GROUP BY id - ORDER BY id DESC - LIMIT {limit}", - last_id = id, - union = union.or(Some("".into())).unwrap(), - limit = n - ) - } else { - format!( - "SELECT id, blake2, filename, orig_dir - FROM images - {union} - GROUP BY id - ORDER BY id DESC", - union = union.or(Some("".into())).unwrap(), - ) - }; + let query = format!( + "SELECT id, blake2, filename, orig_dir + FROM images + {union} + {since} + GROUP BY id + ORDER BY id DESC + {limit}", + since = if let Some(n) = q.last_id { + format!("WHERE id < {}", n) + } else { + String::from("") + }, + limit = if let Some(n) = q.limit { + format!("LIMIT {}", n) + } else { + String::from("") + }, + union = union.or(Some("".into())).unwrap(), + ); Ok(self .0 -- cgit v1.3