You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-07-29 22:01:14 +03:00
Bump Rust dependencies and remove unused ones
This commit is contained in:
@ -18,11 +18,11 @@ http-body = "0.4.5"
|
||||
mime = "0.3.17"
|
||||
rand = "0.8.5"
|
||||
sentry = { version = "0.31.5", default-features = false }
|
||||
serde = "1.0.174"
|
||||
serde = "1.0.176"
|
||||
serde_with = "3.1.0"
|
||||
serde_urlencoded = "0.7.1"
|
||||
serde_json = "1.0.103"
|
||||
thiserror = "1.0.43"
|
||||
serde_json = "1.0.104"
|
||||
thiserror = "1.0.44"
|
||||
tokio = "1.29.1"
|
||||
tower = { version = "0.4.13", features = ["util"] }
|
||||
tracing = "0.1.37"
|
||||
|
@ -6,12 +6,11 @@ edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
apalis-core = "0.4.2"
|
||||
apalis-core = "0.4.3"
|
||||
anyhow = "1.0.72"
|
||||
atty = "0.2.14"
|
||||
axum = "0.6.19"
|
||||
camino = "1.1.6"
|
||||
clap = { version = "4.3.18", features = ["derive"] }
|
||||
clap = { version = "4.3.19", features = ["derive"] }
|
||||
dotenv = "0.15.0"
|
||||
httpdate = "1.0.2"
|
||||
hyper = { version = "0.14.27", features = ["full"] }
|
||||
@ -20,7 +19,7 @@ listenfd = "1.0.1"
|
||||
rand = "0.8.5"
|
||||
rand_chacha = "0.3.1"
|
||||
rustls = "0.21.5"
|
||||
serde_json = "1.0.103"
|
||||
serde_json = "1.0.104"
|
||||
serde_yaml = "0.9.25"
|
||||
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres"] }
|
||||
tokio = { version = "1.29.1", features = ["full"] }
|
||||
|
@ -17,7 +17,7 @@
|
||||
#![warn(clippy::pedantic)]
|
||||
#![allow(clippy::module_name_repetitions)]
|
||||
|
||||
use std::sync::Arc;
|
||||
use std::{io::IsTerminal, sync::Arc};
|
||||
|
||||
use anyhow::Context;
|
||||
use clap::Parser;
|
||||
@ -55,10 +55,12 @@ async fn try_main() -> anyhow::Result<()> {
|
||||
|
||||
// Setup logging
|
||||
// This writes logs to stderr
|
||||
let (log_writer, _guard) = tracing_appender::non_blocking(std::io::stderr());
|
||||
let output = std::io::stderr();
|
||||
let with_ansi = output.is_terminal();
|
||||
let (log_writer, _guard) = tracing_appender::non_blocking(output);
|
||||
let fmt_layer = tracing_subscriber::fmt::layer()
|
||||
.with_writer(log_writer)
|
||||
.with_ansi(atty::is(atty::Stream::Stderr));
|
||||
.with_ansi(with_ansi);
|
||||
let filter_layer = EnvFilter::try_from_default_env()
|
||||
.or_else(|_| EnvFilter::try_new("info"))
|
||||
.context("could not setup logging filter")?;
|
||||
|
@ -10,7 +10,7 @@ tokio = { version = "1.29.1", features = ["fs", "rt"] }
|
||||
tracing = "0.1.37"
|
||||
async-trait = "0.1.72"
|
||||
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
anyhow = "1.0.72"
|
||||
|
||||
camino = { version = "1.1.6", features = ["serde1"] }
|
||||
@ -20,9 +20,9 @@ schemars = { version = "0.8.12", features = ["url", "chrono"] }
|
||||
ulid = { version = "1.0.0", features = ["serde"] }
|
||||
url = { version = "2.4.0", features = ["serde"] }
|
||||
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_with = { version = "3.1.0", features = ["hex", "chrono"] }
|
||||
serde_json = "1.0.103"
|
||||
serde_json = "1.0.104"
|
||||
|
||||
pem-rfc7468 = "0.7.0"
|
||||
rustls-pemfile = "1.0.3"
|
||||
|
@ -7,8 +7,8 @@ license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
chrono = "0.4.26"
|
||||
thiserror = "1.0.43"
|
||||
serde = "1.0.174"
|
||||
thiserror = "1.0.44"
|
||||
serde = "1.0.176"
|
||||
url = { version = "2.4.0", features = ["serde"] }
|
||||
crc = "3.0.1"
|
||||
ulid = { version = "1.0.0", features = ["serde"] }
|
||||
|
@ -8,7 +8,7 @@ license = "Apache-2.0"
|
||||
[dependencies]
|
||||
async-trait = "0.1.72"
|
||||
tracing = "0.1.37"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
headers = "0.3.8"
|
||||
|
||||
aws-sdk-sesv2 = { version = "0.28.0", default-features = false }
|
||||
|
@ -11,8 +11,8 @@ async-graphql = { version = "5.0.10", features = ["chrono", "url"] }
|
||||
async-trait = "0.1.72"
|
||||
chrono = "0.4.26"
|
||||
lettre = { version = "0.10.4", default-features = false }
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
thiserror = "1.0.43"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["sync"] }
|
||||
tracing = "0.1.37"
|
||||
tower = { version = "0.4.13", features = ["util"] }
|
||||
|
@ -15,7 +15,7 @@ tracing = "0.1.37"
|
||||
opentelemetry = "0.19.0"
|
||||
|
||||
# Error management
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
anyhow = "1.0.72"
|
||||
sentry = { version = "0.31.5", default-features = false }
|
||||
|
||||
@ -36,9 +36,9 @@ lettre = { version = "0.10.4", default-features = false, features = ["builder"]
|
||||
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres"] }
|
||||
|
||||
# Various structure (de)serialization
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_with = { version = "3.1.0", features = ["hex", "chrono"] }
|
||||
serde_json = "1.0.103"
|
||||
serde_json = "1.0.104"
|
||||
serde_urlencoded = "0.7.1"
|
||||
|
||||
# Password hashing
|
||||
|
@ -20,23 +20,23 @@ once_cell = "1.18.0"
|
||||
opentelemetry = "0.19.0"
|
||||
rustls = { version = "0.21.5", optional = true }
|
||||
rustls-native-certs = { version = "0.6.3", optional = true }
|
||||
serde = "1.0.174"
|
||||
serde_json = "1.0.103"
|
||||
serde = "1.0.176"
|
||||
serde_json = "1.0.104"
|
||||
serde_urlencoded = "0.7.1"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["sync", "parking_lot"], optional = true }
|
||||
tower = { version = "0.4.13", features = [] }
|
||||
tower-http = { version = "0.4.3", features = ["cors"] }
|
||||
tracing = "0.1.37"
|
||||
tracing-opentelemetry = "0.19.0"
|
||||
webpki = { version = "0.22.0", optional = true }
|
||||
webpki-roots = { version = "0.24.0", optional = true }
|
||||
webpki-roots = { version = "0.25.1", optional = true }
|
||||
|
||||
mas-tower = { path = "../tower" }
|
||||
|
||||
[dev-dependencies]
|
||||
anyhow = "1.0.72"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
tokio = { version = "1.29.1", features = ["macros", "rt"] }
|
||||
tower = { version = "0.4.13", features = ["util"] }
|
||||
|
||||
|
@ -78,7 +78,7 @@ async fn tls_roots() -> Result<rustls::RootCertStore, NativeRootsInitError> {
|
||||
#[allow(clippy::unused_async)]
|
||||
async fn tls_roots() -> Result<rustls::RootCertStore, Infallible> {
|
||||
let mut roots = rustls::RootCertStore::empty();
|
||||
roots.add_server_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.0.iter().map(|ta| {
|
||||
roots.add_server_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.iter().map(|ta| {
|
||||
rustls::OwnedTrustAnchor::from_subject_spki_name_constraints(
|
||||
ta.subject,
|
||||
ta.spki,
|
||||
|
@ -13,7 +13,7 @@ convert_case = "0.6.0"
|
||||
csv = "1.2.2"
|
||||
futures-util = "0.3.28"
|
||||
hyper = { version = "0.14.27", features = ["tcp", "client", "http1"] }
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread", "fs", "io-util"] }
|
||||
tracing = "0.1.37"
|
||||
tracing-subscriber = "0.3.17"
|
||||
|
@ -6,7 +6,7 @@ edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.174", optional = true }
|
||||
serde = { version = "1.0.176", optional = true }
|
||||
schemars = { version = "0.8.12", default-features = false, optional = true }
|
||||
|
||||
[features]
|
||||
|
@ -9,7 +9,7 @@ license = "Apache-2.0"
|
||||
base64ct = { version = "1.6.0", features = ["std"] }
|
||||
chrono = { version = "0.4.26", features = ["serde"] }
|
||||
digest = "0.10.7"
|
||||
ecdsa = { version = "0.16.7", features = ["signing", "verifying"] }
|
||||
ecdsa = { version = "0.16.8", features = ["signing", "verifying"] }
|
||||
elliptic-curve = "0.13.5"
|
||||
generic-array = "0.14.7"
|
||||
hmac = "0.12.1"
|
||||
@ -20,12 +20,12 @@ rand = "0.8.5"
|
||||
rsa = "0.9.2"
|
||||
schemars = "0.8.12"
|
||||
sec1 = "0.7.3"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
serde_with = { version = "3.1.0", features = ["base64"] }
|
||||
sha2 = { version = "0.10.7", features = ["oid"] }
|
||||
signature = "2.1.0"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
tracing = "0.1.37"
|
||||
url = { version = "2.4.0", features = ["serde"] }
|
||||
|
||||
|
@ -10,7 +10,7 @@ aead = { version = "0.5.2", features = ["std"] }
|
||||
const-oid = { version = "0.9.4", features = ["std"] }
|
||||
cookie = { version = "0.17.0", features = ["key-expansion", "private"] }
|
||||
der = { version = "0.7.7", features = ["std"] }
|
||||
ecdsa = { version = "0.16.7", features = ["std"] }
|
||||
ecdsa = { version = "0.16.8", features = ["std"] }
|
||||
elliptic-curve = { version = "0.13.5", features = ["std", "pem", "sec1"] }
|
||||
k256 = { version = "0.13.1", features = ["std"] }
|
||||
p256 = { version = "0.13.2", features = ["std"] }
|
||||
@ -22,7 +22,7 @@ rand = "0.8.5"
|
||||
rsa = { version = "0.9.2", features = ["std", "pem"] }
|
||||
sec1 = { version = "0.7.3", features = ["std"] }
|
||||
spki = { version = "0.7.2", features = ["std"] }
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
generic-array = "0.14.7"
|
||||
chacha20poly1305 = { version = "0.10.1", features = ["std"] }
|
||||
base64ct = "1.6.0"
|
||||
|
@ -11,7 +11,7 @@ futures-util = "0.3.28"
|
||||
http-body = "0.4.5"
|
||||
hyper = { version = "0.14.27", features = ["server", "http1", "http2", "tcp"] }
|
||||
pin-project-lite = "0.2.10"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["net", "rt", "macros", "signal", "time"] }
|
||||
tokio-rustls = "0.24.1"
|
||||
tower-http = { version = "0.4.3", features = ["add-extension"] }
|
||||
|
@ -10,7 +10,7 @@ anyhow = "1.0.72"
|
||||
async-trait = "0.1.72"
|
||||
http = "0.2.9"
|
||||
url = "2.4.0"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
tower = { version = "0.4.13", features = ["util"] }
|
||||
|
||||
mas-axum-utils = { path = "../axum-utils" }
|
||||
|
@ -6,7 +6,7 @@ edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
async-trait = "0.1.72"
|
||||
http = "0.2.9"
|
||||
url = "2.4.0"
|
||||
|
@ -7,8 +7,8 @@ license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
http = "0.2.9"
|
||||
serde = "1.0.174"
|
||||
serde_json = "1.0.103"
|
||||
serde = "1.0.176"
|
||||
serde_json = "1.0.104"
|
||||
language-tags = { version = "0.3.2", features = ["serde"] }
|
||||
url = { version = "2.4.0", features = ["serde"] }
|
||||
parse-display = "0.8.2"
|
||||
@ -17,7 +17,7 @@ serde_with = { version = "3.1.0", features = ["chrono"] }
|
||||
chrono = "0.4.26"
|
||||
sha2 = "0.10.7"
|
||||
data-encoding = "2.4.0"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
|
||||
mas-iana = { path = "../iana" }
|
||||
mas-jose = { path = "../jose" }
|
||||
|
@ -23,18 +23,17 @@ bytes = "1.4.0"
|
||||
chrono = "0.4.26"
|
||||
form_urlencoded = "1.2.0"
|
||||
futures = "0.3.28"
|
||||
futures-signals = "0.3.32"
|
||||
futures-util = "0.3.28"
|
||||
headers = "0.3.8"
|
||||
http = "0.2.9"
|
||||
once_cell = "1.18.0"
|
||||
mime = "0.3.17"
|
||||
rand = "0.8.5"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
serde_urlencoded = "0.7.1"
|
||||
serde_with = "3.1.0"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["rt", "macros", "rt-multi-thread"] }
|
||||
tower = { version = "0.4.13", features = ["full"] }
|
||||
tracing = "0.1.37"
|
||||
|
@ -8,12 +8,12 @@ license = "Apache-2.0"
|
||||
[dependencies]
|
||||
anyhow = "1.0.72"
|
||||
opa-wasm = { git = "https://github.com/matrix-org/rust-opa-wasm.git" }
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
thiserror = "1.0.43"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["io-util"] }
|
||||
tracing = "0.1.37"
|
||||
wasmtime = { version = "10.0.1", default-features = false, features = ["async", "cranelift"] }
|
||||
wasmtime = { version = "11.0.1", default-features = false, features = ["async", "cranelift"] }
|
||||
|
||||
mas-data-model = { path = "../data-model" }
|
||||
oauth2-types = { path = "../oauth2-types" }
|
||||
|
@ -7,7 +7,7 @@ license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
axum = { version = "0.6.19", default-features = false }
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_urlencoded = "0.7.1"
|
||||
url = "2.4.0"
|
||||
ulid = "1.0.0"
|
||||
|
@ -6,7 +6,7 @@ edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
thiserror = "1.0.43"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
thiserror = "1.0.44"
|
||||
camino = { version = "1.1.6", features = ["serde1"] }
|
||||
|
||||
|
@ -8,11 +8,12 @@ license = "Apache-2.0"
|
||||
[dependencies]
|
||||
async-trait = "0.1.72"
|
||||
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres", "migrate", "chrono", "json", "uuid"] }
|
||||
sea-query = { version = "0.28.5", features = ["derive", "attr", "with-uuid", "with-chrono"] }
|
||||
sea-query = { version = "0.30.0", features = ["derive", "attr", "with-uuid", "with-chrono"] }
|
||||
sea-query-binder = { version = "0.5.0", features = ["sqlx-postgres", "with-uuid", "with-chrono"] }
|
||||
chrono = { version = "0.4.26", features = ["serde"] }
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
thiserror = "1.0.43"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
thiserror = "1.0.44"
|
||||
tracing = "0.1.37"
|
||||
futures-util = "0.3.28"
|
||||
|
||||
|
@ -23,6 +23,7 @@ use mas_storage::{
|
||||
};
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use ulid::Ulid;
|
||||
use url::Url;
|
||||
@ -31,7 +32,6 @@ use uuid::Uuid;
|
||||
use crate::{
|
||||
iden::{CompatSessions, CompatSsoLogins},
|
||||
pagination::QueryBuilderExt,
|
||||
sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt,
|
||||
DatabaseError, DatabaseInconsistencyError,
|
||||
};
|
||||
@ -323,7 +323,7 @@ impl<'c> CompatSessionRepository for PgCompatSessionRepository<'c> {
|
||||
filter: CompatSessionFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<(CompatSession, Option<CompatSsoLogin>)>, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((CompatSessions::Table, CompatSessions::CompatSessionId)),
|
||||
CompatSessionAndSsoLoginLookupIden::CompatSessionId,
|
||||
@ -400,9 +400,7 @@ impl<'c> CompatSessionRepository for PgCompatSessionRepository<'c> {
|
||||
(CompatSessions::Table, CompatSessions::CompatSessionId),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<CompatSessionAndSsoLoginLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -423,7 +421,7 @@ impl<'c> CompatSessionRepository for PgCompatSessionRepository<'c> {
|
||||
err,
|
||||
)]
|
||||
async fn count(&mut self, filter: CompatSessionFilter<'_>) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = sea_query::Query::select()
|
||||
let (sql, arguments) = sea_query::Query::select()
|
||||
.expr(Expr::col((CompatSessions::Table, CompatSessions::CompatSessionId)).count())
|
||||
.from(CompatSessions::Table)
|
||||
.and_where_option(filter.user().map(|user| {
|
||||
@ -456,9 +454,7 @@ impl<'c> CompatSessionRepository for PgCompatSessionRepository<'c> {
|
||||
exists.not()
|
||||
}
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -21,6 +21,7 @@ use mas_storage::{
|
||||
};
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use ulid::Ulid;
|
||||
use url::Url;
|
||||
@ -29,7 +30,6 @@ use uuid::Uuid;
|
||||
use crate::{
|
||||
iden::{CompatSessions, CompatSsoLogins},
|
||||
pagination::QueryBuilderExt,
|
||||
sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt,
|
||||
DatabaseError, DatabaseInconsistencyError,
|
||||
};
|
||||
@ -316,7 +316,7 @@ impl<'c> CompatSsoLoginRepository for PgCompatSsoLoginRepository<'c> {
|
||||
filter: CompatSsoLoginFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<CompatSsoLogin>, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((CompatSsoLogins::Table, CompatSsoLogins::CompatSsoLoginId)),
|
||||
CompatSsoLoginLookupIden::CompatSsoLoginId,
|
||||
@ -380,9 +380,7 @@ impl<'c> CompatSsoLoginRepository for PgCompatSsoLoginRepository<'c> {
|
||||
(CompatSsoLogins::Table, CompatSsoLogins::CompatSsoLoginId),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<CompatSsoLoginLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -403,7 +401,7 @@ impl<'c> CompatSsoLoginRepository for PgCompatSsoLoginRepository<'c> {
|
||||
err
|
||||
)]
|
||||
async fn count(&mut self, filter: CompatSsoLoginFilter<'_>) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr(Expr::col((CompatSsoLogins::Table, CompatSsoLogins::CompatSsoLoginId)).count())
|
||||
.from(CompatSsoLogins::Table)
|
||||
.and_where_option(filter.user().map(|user| {
|
||||
@ -436,9 +434,7 @@ impl<'c> CompatSsoLoginRepository for PgCompatSsoLoginRepository<'c> {
|
||||
Expr::col((CompatSsoLogins::Table, CompatSsoLogins::FulfilledAt)).is_null()
|
||||
}
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -187,7 +187,6 @@ mod errors;
|
||||
pub(crate) mod iden;
|
||||
pub(crate) mod pagination;
|
||||
pub(crate) mod repository;
|
||||
mod sea_query_sqlx;
|
||||
pub(crate) mod tracing;
|
||||
|
||||
pub(crate) use self::errors::DatabaseInconsistencyError;
|
||||
|
@ -22,6 +22,7 @@ use mas_storage::{
|
||||
use oauth2_types::scope::Scope;
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use ulid::Ulid;
|
||||
use uuid::Uuid;
|
||||
@ -29,7 +30,6 @@ use uuid::Uuid;
|
||||
use crate::{
|
||||
iden::{OAuth2Sessions, UserSessions},
|
||||
pagination::QueryBuilderExt,
|
||||
sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt,
|
||||
DatabaseError, DatabaseInconsistencyError,
|
||||
};
|
||||
@ -232,7 +232,7 @@ impl<'c> OAuth2SessionRepository for PgOAuth2SessionRepository<'c> {
|
||||
filter: OAuth2SessionFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<Session>, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((OAuth2Sessions::Table, OAuth2Sessions::OAuth2SessionId)),
|
||||
OAuthSessionLookupIden::Oauth2SessionId,
|
||||
@ -291,9 +291,7 @@ impl<'c> OAuth2SessionRepository for PgOAuth2SessionRepository<'c> {
|
||||
(OAuth2Sessions::Table, OAuth2Sessions::OAuth2SessionId),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<OAuthSessionLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -314,7 +312,7 @@ impl<'c> OAuth2SessionRepository for PgOAuth2SessionRepository<'c> {
|
||||
err,
|
||||
)]
|
||||
async fn count(&mut self, filter: OAuth2SessionFilter<'_>) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr(Expr::col((OAuth2Sessions::Table, OAuth2Sessions::OAuth2SessionId)).count())
|
||||
.from(OAuth2Sessions::Table)
|
||||
.and_where_option(filter.user().map(|user| {
|
||||
@ -346,9 +344,7 @@ impl<'c> OAuth2SessionRepository for PgOAuth2SessionRepository<'c> {
|
||||
Expr::col((OAuth2Sessions::Table, OAuth2Sessions::FinishedAt)).is_not_null()
|
||||
}
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -1,54 +0,0 @@
|
||||
// Copyright 2021-2023 The Matrix.org Foundation C.I.C.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//! A [`sea_query::Values`] to [`sqlx::Arguments`] mapper
|
||||
|
||||
use sea_query::Value;
|
||||
use sqlx::Arguments;
|
||||
|
||||
pub(crate) fn map_values(values: sea_query::Values) -> sqlx::postgres::PgArguments {
|
||||
let mut arguments = sqlx::postgres::PgArguments::default();
|
||||
|
||||
for value in values {
|
||||
match value {
|
||||
Value::Bool(b) => arguments.add(b),
|
||||
Value::TinyInt(i) => arguments.add(i),
|
||||
Value::SmallInt(i) => arguments.add(i),
|
||||
Value::Int(i) => arguments.add(i),
|
||||
Value::BigInt(i) => arguments.add(i),
|
||||
Value::TinyUnsigned(u) => arguments.add(u.map(i16::from)),
|
||||
Value::SmallUnsigned(u) => arguments.add(u.map(i32::from)),
|
||||
Value::Unsigned(u) => arguments.add(u.map(i64::from)),
|
||||
Value::BigUnsigned(u) => arguments.add(u.map(|u| i64::try_from(u).unwrap_or(i64::MAX))),
|
||||
Value::Float(f) => arguments.add(f),
|
||||
Value::Double(d) => arguments.add(d),
|
||||
Value::String(s) => arguments.add(s.as_deref()),
|
||||
Value::Char(c) => arguments.add(c.map(|c| c.to_string())),
|
||||
Value::Bytes(b) => arguments.add(b.as_deref()),
|
||||
Value::ChronoDate(d) => arguments.add(d.as_deref()),
|
||||
Value::ChronoTime(t) => arguments.add(t.as_deref()),
|
||||
Value::ChronoDateTime(dt) => arguments.add(dt.as_deref()),
|
||||
Value::ChronoDateTimeUtc(dt) => arguments.add(dt.as_deref()),
|
||||
Value::ChronoDateTimeLocal(dt) => arguments.add(dt.as_deref()),
|
||||
Value::ChronoDateTimeWithTimeZone(dt) => arguments.add(dt.as_deref()),
|
||||
Value::Uuid(u) => arguments.add(u.as_deref()),
|
||||
|
||||
// This depends on the features enabled for sea-query, so let's keep the wildcard
|
||||
#[allow(unreachable_patterns)]
|
||||
_ => unimplemented!(),
|
||||
}
|
||||
}
|
||||
|
||||
arguments
|
||||
}
|
@ -21,13 +21,13 @@ use mas_storage::{
|
||||
};
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use ulid::Ulid;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
iden::UpstreamOAuthLinks, pagination::QueryBuilderExt, sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt, DatabaseError,
|
||||
iden::UpstreamOAuthLinks, pagination::QueryBuilderExt, tracing::ExecuteExt, DatabaseError,
|
||||
};
|
||||
|
||||
/// An implementation of [`UpstreamOAuthLinkRepository`] for a PostgreSQL
|
||||
@ -241,7 +241,7 @@ impl<'c> UpstreamOAuthLinkRepository for PgUpstreamOAuthLinkRepository<'c> {
|
||||
filter: UpstreamOAuthLinkFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<UpstreamOAuthLink>, DatabaseError> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((
|
||||
UpstreamOAuthLinks::Table,
|
||||
@ -287,9 +287,7 @@ impl<'c> UpstreamOAuthLinkRepository for PgUpstreamOAuthLinkRepository<'c> {
|
||||
),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<LinkLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -310,7 +308,7 @@ impl<'c> UpstreamOAuthLinkRepository for PgUpstreamOAuthLinkRepository<'c> {
|
||||
err,
|
||||
)]
|
||||
async fn count(&mut self, filter: UpstreamOAuthLinkFilter<'_>) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr(
|
||||
Expr::col((
|
||||
UpstreamOAuthLinks::Table,
|
||||
@ -330,9 +328,7 @@ impl<'c> UpstreamOAuthLinkRepository for PgUpstreamOAuthLinkRepository<'c> {
|
||||
))
|
||||
.eq(Uuid::from(provider.id))
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -23,14 +23,15 @@ use mas_storage::{
|
||||
use oauth2_types::scope::Scope;
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::{types::Json, PgConnection};
|
||||
use tracing::{info_span, Instrument};
|
||||
use ulid::Ulid;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
iden::UpstreamOAuthProviders, pagination::QueryBuilderExt, sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt, DatabaseError, DatabaseInconsistencyError,
|
||||
iden::UpstreamOAuthProviders, pagination::QueryBuilderExt, tracing::ExecuteExt, DatabaseError,
|
||||
DatabaseInconsistencyError,
|
||||
};
|
||||
|
||||
/// An implementation of [`UpstreamOAuthProviderRepository`] for a PostgreSQL
|
||||
@ -373,7 +374,7 @@ impl<'c> UpstreamOAuthProviderRepository for PgUpstreamOAuthProviderRepository<'
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<UpstreamOAuthProvider>, Self::Error> {
|
||||
// XXX: the filter is currently ignored, as it does not have any fields
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((
|
||||
UpstreamOAuthProviders::Table,
|
||||
@ -442,9 +443,7 @@ impl<'c> UpstreamOAuthProviderRepository for PgUpstreamOAuthProviderRepository<'
|
||||
),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<ProviderLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -471,7 +470,7 @@ impl<'c> UpstreamOAuthProviderRepository for PgUpstreamOAuthProviderRepository<'
|
||||
_filter: UpstreamOAuthProviderFilter<'_>,
|
||||
) -> Result<usize, Self::Error> {
|
||||
// XXX: the filter is currently ignored, as it does not have any fields
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr(
|
||||
Expr::col((
|
||||
UpstreamOAuthProviders::Table,
|
||||
@ -480,9 +479,7 @@ impl<'c> UpstreamOAuthProviderRepository for PgUpstreamOAuthProviderRepository<'
|
||||
.count(),
|
||||
)
|
||||
.from(UpstreamOAuthProviders::Table)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -21,14 +21,15 @@ use mas_storage::{
|
||||
};
|
||||
use rand::RngCore;
|
||||
use sea_query::{enum_def, Expr, PostgresQueryBuilder, Query};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use tracing::{info_span, Instrument};
|
||||
use ulid::Ulid;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
iden::UserEmails, pagination::QueryBuilderExt, sea_query_sqlx::map_values, tracing::ExecuteExt,
|
||||
DatabaseError, DatabaseInconsistencyError,
|
||||
iden::UserEmails, pagination::QueryBuilderExt, tracing::ExecuteExt, DatabaseError,
|
||||
DatabaseInconsistencyError,
|
||||
};
|
||||
|
||||
/// An implementation of [`UserEmailRepository`] for a PostgreSQL connection
|
||||
@ -243,7 +244,7 @@ impl<'c> UserEmailRepository for PgUserEmailRepository<'c> {
|
||||
filter: UserEmailFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<UserEmail>, DatabaseError> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr_as(
|
||||
Expr::col((UserEmails::Table, UserEmails::UserEmailId)),
|
||||
UserEmailLookupIden::UserEmailId,
|
||||
@ -276,9 +277,7 @@ impl<'c> UserEmailRepository for PgUserEmailRepository<'c> {
|
||||
}
|
||||
}))
|
||||
.generate_pagination((UserEmails::Table, UserEmails::UserEmailId), pagination)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<UserEmailLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -299,7 +298,7 @@ impl<'c> UserEmailRepository for PgUserEmailRepository<'c> {
|
||||
err,
|
||||
)]
|
||||
async fn count(&mut self, filter: UserEmailFilter<'_>) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = Query::select()
|
||||
let (sql, arguments) = Query::select()
|
||||
.expr(Expr::col((UserEmails::Table, UserEmails::UserEmailId)).count())
|
||||
.from(UserEmails::Table)
|
||||
.and_where_option(filter.user().map(|user| {
|
||||
@ -312,9 +311,7 @@ impl<'c> UserEmailRepository for PgUserEmailRepository<'c> {
|
||||
Expr::col((UserEmails::Table, UserEmails::ConfirmedAt)).is_null()
|
||||
}
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -18,6 +18,7 @@ use mas_data_model::{Authentication, BrowserSession, Password, UpstreamOAuthLink
|
||||
use mas_storage::{user::BrowserSessionRepository, Clock, Page, Pagination};
|
||||
use rand::RngCore;
|
||||
use sea_query::{Expr, PostgresQueryBuilder};
|
||||
use sea_query_binder::SqlxBinder;
|
||||
use sqlx::PgConnection;
|
||||
use ulid::Ulid;
|
||||
use uuid::Uuid;
|
||||
@ -25,7 +26,6 @@ use uuid::Uuid;
|
||||
use crate::{
|
||||
iden::{UserSessions, Users},
|
||||
pagination::QueryBuilderExt,
|
||||
sea_query_sqlx::map_values,
|
||||
tracing::ExecuteExt,
|
||||
DatabaseError, DatabaseInconsistencyError,
|
||||
};
|
||||
@ -207,7 +207,7 @@ impl<'c> BrowserSessionRepository for PgBrowserSessionRepository<'c> {
|
||||
filter: mas_storage::user::BrowserSessionFilter<'_>,
|
||||
pagination: Pagination,
|
||||
) -> Result<Page<BrowserSession>, Self::Error> {
|
||||
let (sql, values) = sea_query::Query::select()
|
||||
let (sql, arguments) = sea_query::Query::select()
|
||||
.expr_as(
|
||||
Expr::col((UserSessions::Table, UserSessions::UserSessionId)),
|
||||
SessionLookupIden::UserSessionId,
|
||||
@ -254,9 +254,7 @@ impl<'c> BrowserSessionRepository for PgBrowserSessionRepository<'c> {
|
||||
(UserSessions::Table, UserSessions::UserSessionId),
|
||||
pagination,
|
||||
)
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let edges: Vec<SessionLookup> = sqlx::query_as_with(&sql, arguments)
|
||||
.traced()
|
||||
@ -282,7 +280,7 @@ impl<'c> BrowserSessionRepository for PgBrowserSessionRepository<'c> {
|
||||
&mut self,
|
||||
filter: mas_storage::user::BrowserSessionFilter<'_>,
|
||||
) -> Result<usize, Self::Error> {
|
||||
let (sql, values) = sea_query::Query::select()
|
||||
let (sql, arguments) = sea_query::Query::select()
|
||||
.expr(Expr::col((UserSessions::Table, UserSessions::UserSessionId)).count())
|
||||
.from(UserSessions::Table)
|
||||
.and_where_option(filter.user().map(|user| {
|
||||
@ -295,9 +293,7 @@ impl<'c> BrowserSessionRepository for PgBrowserSessionRepository<'c> {
|
||||
Expr::col((UserSessions::Table, UserSessions::FinishedAt)).is_not_null()
|
||||
}
|
||||
}))
|
||||
.build(PostgresQueryBuilder);
|
||||
|
||||
let arguments = map_values(values);
|
||||
.build_sqlx(PostgresQueryBuilder);
|
||||
|
||||
let count: i64 = sqlx::query_scalar_with(&sql, arguments)
|
||||
.traced()
|
||||
|
@ -8,14 +8,14 @@ license = "Apache-2.0"
|
||||
[dependencies]
|
||||
async-trait = "0.1.72"
|
||||
chrono = "0.4.26"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
futures-util = "0.3.28"
|
||||
|
||||
apalis-core = { version = "0.4.2", features = ["tokio-comp"] }
|
||||
apalis-core = { version = "0.4.3", features = ["tokio-comp"] }
|
||||
opentelemetry = "0.19.0"
|
||||
rand_core = "0.6.4"
|
||||
serde = "1.0.174"
|
||||
serde_json = "1.0.103"
|
||||
serde = "1.0.176"
|
||||
serde_json = "1.0.104"
|
||||
tracing = "0.1.37"
|
||||
tracing-opentelemetry = "0.19.0"
|
||||
url = "2.4.0"
|
||||
|
@ -7,8 +7,8 @@ license = "apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.72"
|
||||
apalis-core = { version = "0.4.2", features = ["extensions", "tokio-comp", "storage"] }
|
||||
apalis-cron = "0.4.2"
|
||||
apalis-core = { version = "0.4.3", features = ["extensions", "tokio-comp", "storage"] }
|
||||
apalis-cron = "0.4.3"
|
||||
async-stream = "0.3.5"
|
||||
async-trait = "0.1.72"
|
||||
chrono = "0.4.26"
|
||||
@ -17,7 +17,7 @@ futures-lite = "1.13.0"
|
||||
rand = "0.8.5"
|
||||
rand_chacha = "0.3.1"
|
||||
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres"] }
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
tokio = { version = "1.29.1", features = ["rt"] }
|
||||
tower = "0.4.13"
|
||||
tracing = "0.1.37"
|
||||
@ -25,8 +25,8 @@ tracing-opentelemetry = "0.19.0"
|
||||
opentelemetry = "0.19.0"
|
||||
ulid = "1.0.0"
|
||||
url = "2.4.0"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
|
||||
mas-data-model = { path = "../data-model" }
|
||||
mas-email = { path = "../email" }
|
||||
|
@ -10,11 +10,11 @@ tracing = "0.1.37"
|
||||
tokio = { version = "1.29.1", features = ["macros", "rt"] }
|
||||
|
||||
anyhow = "1.0.72"
|
||||
thiserror = "1.0.43"
|
||||
thiserror = "1.0.44"
|
||||
|
||||
tera = "1.19.0"
|
||||
serde = { version = "1.0.174", features = ["derive"] }
|
||||
serde_json = "1.0.103"
|
||||
serde = { version = "1.0.176", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
serde_urlencoded = "0.7.1"
|
||||
|
||||
camino = "1.1.6"
|
||||
|
Reference in New Issue
Block a user