1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-07-31 09:24:31 +03:00

WIP: repository pattern for upstream oauth2 links

This commit is contained in:
Quentin Gliech
2022-12-30 10:16:22 +01:00
parent aa1cfcefc4
commit 5969b574e2
14 changed files with 419 additions and 287 deletions

View File

@ -30,6 +30,7 @@ use async_graphql::{
connection::{query, Connection, Edge, OpaqueCursor},
Context, Description, EmptyMutation, EmptySubscription, ID,
};
use mas_storage::{Repository, UpstreamOAuthLinkRepository};
use model::CreationEvent;
use sqlx::PgPool;
@ -171,7 +172,7 @@ impl RootQuery {
let Some(session) = session else { return Ok(None) };
let current_user = session.user;
let link = mas_storage::upstream_oauth2::lookup_link(&mut conn, id).await?;
let link = conn.upstream_oauth_link().lookup(id).await?;
// Ensure that the link belongs to the current user
let link = link.filter(|link| link.user_id == Some(current_user.id));

View File

@ -17,6 +17,7 @@ use async_graphql::{
Context, Description, Object, ID,
};
use chrono::{DateTime, Utc};
use mas_storage::{Repository, UpstreamOAuthLinkRepository};
use sqlx::PgPool;
use super::{
@ -285,14 +286,13 @@ impl User {
})
.transpose()?;
let (has_previous_page, has_next_page, edges) =
mas_storage::upstream_oauth2::get_paginated_user_links(
&mut conn, &self.0, before_id, after_id, first, last,
)
let page = conn
.upstream_oauth_link()
.list_paginated(&self.0, before_id, after_id, first, last)
.await?;
let mut connection = Connection::new(has_previous_page, has_next_page);
connection.edges.extend(edges.into_iter().map(|s| {
let mut connection = Connection::new(page.has_previous_page, page.has_next_page);
connection.edges.extend(page.edges.into_iter().map(|s| {
Edge::new(
OpaqueCursor(NodeCursor(NodeType::UpstreamOAuth2Link, s.id)),
UpstreamOAuth2Link::new(s),