mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-05-01 00:31:09 +00:00
Impl untilToken
for item_list
to avoid over-fetching seen items
This commit is contained in:
parent
8b096ba802
commit
67ea6aaacc
1 changed files with 9 additions and 2 deletions
|
@ -229,6 +229,7 @@ async fn room_list(
|
||||||
let pagination = Pagination {
|
let pagination = Pagination {
|
||||||
skip_token: params.skip_token,
|
skip_token: params.skip_token,
|
||||||
top: params.top,
|
top: params.top,
|
||||||
|
until_token: None,
|
||||||
};
|
};
|
||||||
let page_len = pagination.effective_page_len(&st);
|
let page_len = pagination.effective_page_len(&st);
|
||||||
let start_rid = pagination.skip_token.unwrap_or(Id(0));
|
let start_rid = pagination.skip_token.unwrap_or(Id(0));
|
||||||
|
@ -453,6 +454,9 @@ struct Pagination {
|
||||||
skip_token: Option<Id>,
|
skip_token: Option<Id>,
|
||||||
/// Maximum page size.
|
/// Maximum page size.
|
||||||
top: Option<NonZeroUsize>,
|
top: Option<NonZeroUsize>,
|
||||||
|
/// Only return items before (excluding) this token.
|
||||||
|
/// Useful for `room_item_list` to pass `last_seen_cid` without over-fetching.
|
||||||
|
until_token: Option<Id>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Pagination {
|
impl Pagination {
|
||||||
|
@ -552,6 +556,7 @@ async fn room_get_feed(
|
||||||
let next_params = Pagination {
|
let next_params = Pagination {
|
||||||
skip_token: Some(skip_token),
|
skip_token: Some(skip_token),
|
||||||
top: pagination.top,
|
top: pagination.top,
|
||||||
|
until_token: None,
|
||||||
};
|
};
|
||||||
let mut next_url = feed_url.clone();
|
let mut next_url = feed_url.clone();
|
||||||
{
|
{
|
||||||
|
@ -672,7 +677,8 @@ fn query_room_items(
|
||||||
FROM `room_item`
|
FROM `room_item`
|
||||||
JOIN `user` USING (`uid`)
|
JOIN `user` USING (`uid`)
|
||||||
WHERE `rid` = :rid AND
|
WHERE `rid` = :rid AND
|
||||||
(:before_cid IS NULL OR `cid` < :before_cid)
|
:after_cid < `cid` AND
|
||||||
|
`cid` < :before_cid
|
||||||
ORDER BY `cid` DESC
|
ORDER BY `cid` DESC
|
||||||
LIMIT :limit
|
LIMIT :limit
|
||||||
",
|
",
|
||||||
|
@ -681,7 +687,8 @@ fn query_room_items(
|
||||||
.query_and_then(
|
.query_and_then(
|
||||||
named_params! {
|
named_params! {
|
||||||
":rid": rid,
|
":rid": rid,
|
||||||
":before_cid": pagination.skip_token,
|
":after_cid": pagination.until_token.unwrap_or(Id(-1)),
|
||||||
|
":before_cid": pagination.skip_token.unwrap_or(Id(i64::MAX)),
|
||||||
":limit": page_len,
|
":limit": page_len,
|
||||||
},
|
},
|
||||||
|row| {
|
|row| {
|
||||||
|
|
Loading…
Add table
Reference in a new issue