1
0
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:
Quentin Gliech
2023-07-27 17:01:16 +02:00
parent 503c858bf1
commit e79da4a949
36 changed files with 387 additions and 670 deletions

View File

@ -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"

View File

@ -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"] }

View File

@ -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")?;

View File

@ -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"

View File

@ -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"] }

View File

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

View File

@ -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"] }

View File

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

View File

@ -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"] }

View File

@ -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,

View File

@ -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"

View File

@ -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]

View File

@ -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"] }

View File

@ -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"

View File

@ -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"] }

View File

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

View File

@ -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"

View File

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

View File

@ -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"

View File

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

View File

@ -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"

View File

@ -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"] }

View File

@ -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"

View File

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

View File

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

View File

@ -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;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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"

View File

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

View File

@ -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"