diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2020-05-28 18:12:46 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2020-05-28 18:12:46 -0400 |
| commit | 4dbb8998f840a771949ed30f9f2b652713edd0f9 (patch) | |
| tree | 938d79fef0b4c6ca8ccde0bd46a0a4f727e9d032 /src/database.rs | |
| parent | 3417d6323598bca299a3d4c6dea21e013e6681be (diff) | |
Implement initial pagination.
Diffstat (limited to 'src/database.rs')
| -rw-r--r-- | src/database.rs | 43 |
1 files changed, 20 insertions, 23 deletions
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 |