feat(gpodder): add paginated sessions function
This commit is contained in:
parent
bf132f93dc
commit
823133c034
4 changed files with 45 additions and 0 deletions
|
|
@ -114,4 +114,31 @@ impl gpodder::AuthStore for SqliteRepository {
|
|||
.map_err(DbError::from)?,
|
||||
)
|
||||
}
|
||||
|
||||
fn paginated_sessions(
|
||||
&self,
|
||||
user: &gpodder::User,
|
||||
page: gpodder::Page,
|
||||
) -> Result<Vec<gpodder::Session>, AuthErr> {
|
||||
(|| {
|
||||
let sessions = sessions::table
|
||||
.filter(sessions::user_id.eq(user.id))
|
||||
.order(sessions::last_seen.desc())
|
||||
.offset((page.page * page.per_page) as i64)
|
||||
.limit(page.per_page as i64)
|
||||
.select(Session::as_select())
|
||||
.get_results(&mut self.pool.get()?)?
|
||||
.into_iter()
|
||||
.map(|session| gpodder::Session {
|
||||
id: session.id,
|
||||
last_seen: DateTime::from_timestamp(session.last_seen, 0).unwrap(),
|
||||
user_agent: session.user_agent,
|
||||
user: user.clone(),
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok::<_, DbError>(sessions)
|
||||
})()
|
||||
.map_err(AuthErr::from)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue