1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-07-29 22:01:14 +03:00

Insert client redirect_uris in one query

This commit is contained in:
Quentin Gliech
2022-10-21 15:04:02 +02:00
parent 770541eb38
commit 02c30d9916

View File

@ -391,21 +391,24 @@ pub async fn insert_client(
.execute(&mut *conn) .execute(&mut *conn)
.await?; .await?;
for redirect_uri in redirect_uris { let (ids, redirect_uris): (Vec<Uuid>, Vec<String>) = redirect_uris
let id = Ulid::new(); .iter()
sqlx::query!( .map(|uri| (Uuid::from(Ulid::new()), uri.as_str().to_owned()))
r#" .unzip();
INSERT INTO oauth2_client_redirect_uris
(oauth2_client_redirect_uri_id, oauth2_client_id, redirect_uri) sqlx::query!(
VALUES ($1, $2, $3) r#"
"#, INSERT INTO oauth2_client_redirect_uris
Uuid::from(id), (oauth2_client_redirect_uri_id, oauth2_client_id, redirect_uri)
Uuid::from(client_id), SELECT id, $2, redirect_uri
redirect_uri.as_str(), FROM UNNEST($1::uuid[], $3::text[]) r(id, redirect_uri)
) "#,
.execute(&mut *conn) &ids,
.await?; Uuid::from(client_id),
} &redirect_uris,
)
.execute(&mut *conn)
.await?;
Ok(()) Ok(())
} }
@ -448,21 +451,24 @@ pub async fn insert_client_from_config(
.execute(&mut *conn) .execute(&mut *conn)
.await?; .await?;
for redirect_uri in redirect_uris { let (ids, redirect_uris): (Vec<Uuid>, Vec<String>) = redirect_uris
let id = Ulid::new(); .iter()
sqlx::query!( .map(|uri| (Uuid::from(Ulid::new()), uri.as_str().to_owned()))
r#" .unzip();
INSERT INTO oauth2_client_redirect_uris
(oauth2_client_redirect_uri_id, oauth2_client_id, redirect_uri) sqlx::query!(
VALUES ($1, $2, $3) r#"
"#, INSERT INTO oauth2_client_redirect_uris
Uuid::from(id), (oauth2_client_redirect_uri_id, oauth2_client_id, redirect_uri)
Uuid::from(client_id), SELECT id, $2, redirect_uri
redirect_uri.as_str(), FROM UNNEST($1::uuid[], $3::text[]) r(id, redirect_uri)
) "#,
.execute(&mut *conn) &ids,
.await?; Uuid::from(client_id),
} &redirect_uris,
)
.execute(&mut *conn)
.await?;
Ok(()) Ok(())
} }