1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-11-20 12:02:22 +03:00

storage: simplify the paginated queries

This commit is contained in:
Quentin Gliech
2023-01-17 15:09:53 +01:00
parent 62be962c4e
commit 0d02864589
11 changed files with 207 additions and 178 deletions

View File

@@ -34,7 +34,7 @@ use mas_storage::{
oauth2::OAuth2ClientRepository,
upstream_oauth2::{UpstreamOAuthLinkRepository, UpstreamOAuthProviderRepository},
user::{BrowserSessionRepository, UserEmailRepository},
PgRepository, Repository,
Pagination, PgRepository, Repository,
};
use model::CreationEvent;
use sqlx::PgPool;
@@ -228,10 +228,11 @@ impl RootQuery {
x.extract_for_type(NodeType::UpstreamOAuth2Provider)
})
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.upstream_oauth_provider()
.list_paginated(before_id, after_id, first, last)
.list_paginated(&pagination)
.await?;
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);

View File

@@ -22,7 +22,7 @@ use mas_storage::{
oauth2::OAuth2SessionRepository,
upstream_oauth2::UpstreamOAuthLinkRepository,
user::{BrowserSessionRepository, UserEmailRepository},
PgRepository, Repository,
Pagination, PgRepository, Repository,
};
use sqlx::PgPool;
@@ -95,10 +95,11 @@ impl User {
let before_id = before
.map(|x: OpaqueCursor<NodeCursor>| x.extract_for_type(NodeType::CompatSsoLogin))
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.compat_sso_login()
.list_paginated(&self.0, before_id, after_id, first, last)
.list_paginated(&self.0, &pagination)
.await?;
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);
@@ -141,10 +142,11 @@ impl User {
let before_id = before
.map(|x: OpaqueCursor<NodeCursor>| x.extract_for_type(NodeType::BrowserSession))
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.browser_session()
.list_active_paginated(&self.0, before_id, after_id, first, last)
.list_active_paginated(&self.0, &pagination)
.await?;
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);
@@ -187,10 +189,11 @@ impl User {
let before_id = before
.map(|x: OpaqueCursor<NodeCursor>| x.extract_for_type(NodeType::UserEmail))
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.user_email()
.list_paginated(&self.0, before_id, after_id, first, last)
.list_paginated(&self.0, &pagination)
.await?;
let mut connection = Connection::with_additional_fields(
@@ -237,10 +240,11 @@ impl User {
let before_id = before
.map(|x: OpaqueCursor<NodeCursor>| x.extract_for_type(NodeType::OAuth2Session))
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.oauth2_session()
.list_paginated(&self.0, before_id, after_id, first, last)
.list_paginated(&self.0, &pagination)
.await?;
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);
@@ -287,10 +291,11 @@ impl User {
x.extract_for_type(NodeType::UpstreamOAuth2Link)
})
.transpose()?;
let pagination = Pagination::try_new(before_id, after_id, first, last)?;
let page = repo
.upstream_oauth_link()
.list_paginated(&self.0, before_id, after_id, first, last)
.list_paginated(&self.0, &pagination)
.await?;
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);