feat(gpodder): add paginated sessions function

This commit is contained in:
Jef Roosens 2025-03-31 14:29:58 +02:00
parent bf132f93dc
commit 823133c034
No known key found for this signature in database
GPG key ID: 21FD3D77D56BAF49
4 changed files with 45 additions and 0 deletions

View file

@ -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)
}
}