Add SQLx operation tracing (#5223)

* wip: vendor sqlx-tracing

* (compiles) standardize pg types used

* more standardization

* general log message improvements

* wip: improve sqlx-tracing architecture

* unify sqlx::Executor type

* wip: try fix sqlx tracing

* wip: sqlx-tracing compiles

* so close

* it compiles

* fix ci
This commit is contained in:
aecsocket
2026-01-28 13:38:57 +00:00
committed by GitHub
parent 7cb7e881fa
commit e57c15b3ce
146 changed files with 7320 additions and 801 deletions
+48 -49
View File
@@ -1,10 +1,10 @@
use super::ids::{DBProjectId, DBUserId};
use super::{DBCollectionId, DBReportId, DBThreadId};
use crate::database::models;
use crate::database::models::charge_item::DBCharge;
use crate::database::models::user_subscription_item::DBUserSubscription;
use crate::database::models::{DBOrganizationId, DatabaseError};
use crate::database::redis::RedisPool;
use crate::database::{PgTransaction, models};
use crate::models::billing::ChargeStatus;
use crate::models::users::Badges;
use ariadne::ids::base62_impl::{parse_base62, to_base62};
@@ -56,7 +56,7 @@ pub struct DBUser {
impl DBUser {
pub async fn insert(
&self,
transaction: &mut sqlx::Transaction<'_, sqlx::Postgres>,
transaction: &mut PgTransaction<'_>,
) -> Result<(), sqlx::error::Error> {
sqlx::query!(
"
@@ -97,7 +97,7 @@ impl DBUser {
self.allow_friend_requests,
self.is_subscribed_to_newsletter,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
Ok(())
@@ -109,7 +109,7 @@ impl DBUser {
redis: &RedisPool,
) -> Result<Option<DBUser>, DatabaseError>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
DBUser::get_many(&[string], executor, redis)
.await
@@ -122,7 +122,7 @@ impl DBUser {
redis: &RedisPool,
) -> Result<Option<DBUser>, DatabaseError>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
DBUser::get_many(&[ariadne::ids::UserId::from(id)], executor, redis)
.await
@@ -135,7 +135,7 @@ impl DBUser {
redis: &RedisPool,
) -> Result<Vec<DBUser>, DatabaseError>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
let ids = user_ids
.iter()
@@ -154,7 +154,7 @@ impl DBUser {
redis: &RedisPool,
) -> Result<Vec<DBUser>, DatabaseError>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::TryStreamExt;
@@ -233,7 +233,7 @@ impl DBUser {
exec: E,
) -> Result<Option<DBUserId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
let user = sqlx::query!(
"
@@ -254,7 +254,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<DBUserId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
let users = sqlx::query!(
"
@@ -276,7 +276,7 @@ impl DBUser {
exec: E,
) -> Result<bool, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
let ids = user_ids.iter().map(|x| x.0).collect::<Vec<_>>();
let count = sqlx::query_scalar!(
@@ -295,7 +295,7 @@ impl DBUser {
redis: &RedisPool,
) -> Result<Vec<DBProjectId>, DatabaseError>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -347,7 +347,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<DBOrganizationId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -372,7 +372,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<DBCollectionId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -396,7 +396,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<DBProjectId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -420,7 +420,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<DBReportId>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -444,7 +444,7 @@ impl DBUser {
exec: E,
) -> Result<Vec<String>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
E: crate::database::Executor<'a, Database = sqlx::Postgres>,
{
use futures::stream::TryStreamExt;
@@ -502,10 +502,10 @@ impl DBUser {
pub async fn remove(
id: DBUserId,
transaction: &mut sqlx::Transaction<'_, sqlx::Postgres>,
transaction: &mut PgTransaction<'_>,
redis: &RedisPool,
) -> Result<Option<()>, DatabaseError> {
let user = Self::get_id(id, &mut **transaction, redis).await?;
let user = Self::get_id(id, &mut *transaction, redis).await?;
if let Some(delete_user) = user {
DBUser::clear_caches(&[(id, Some(delete_user.username))], redis)
@@ -523,7 +523,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -535,7 +535,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -547,7 +547,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
use futures::TryStreamExt;
@@ -558,7 +558,7 @@ impl DBUser {
",
id as DBUserId,
)
.fetch(&mut **transaction)
.fetch(&mut *transaction)
.map_ok(|m| m.id)
.try_collect::<Vec<i64>>()
.await?;
@@ -570,7 +570,7 @@ impl DBUser {
",
&notifications
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -580,7 +580,7 @@ impl DBUser {
",
id as DBUserId
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -590,7 +590,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
let user_collections = sqlx::query!(
@@ -601,7 +601,7 @@ impl DBUser {
",
id as DBUserId,
)
.fetch(&mut **transaction)
.fetch(&mut *transaction)
.map_ok(|x| DBCollectionId(x.id))
.try_collect::<Vec<_>>()
.await?;
@@ -620,7 +620,7 @@ impl DBUser {
",
id as DBUserId,
)
.fetch(&mut **transaction)
.fetch(&mut *transaction)
.map_ok(|x| DBThreadId(x.id))
.try_collect::<Vec<_>>()
.await?;
@@ -636,7 +636,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -648,7 +648,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -658,7 +658,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -668,7 +668,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -678,7 +678,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -690,7 +690,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -702,7 +702,7 @@ impl DBUser {
id as DBUserId,
deleted_user as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -712,7 +712,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -724,7 +724,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -734,7 +734,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -744,7 +744,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -754,7 +754,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -765,7 +765,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -774,7 +774,7 @@ impl DBUser {
WHERE affiliate = $1",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -785,7 +785,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -794,16 +794,15 @@ impl DBUser {
WHERE user_id = $1",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
let open_subscriptions =
DBUserSubscription::get_all_user(id, &mut **transaction)
.await?;
DBUserSubscription::get_all_user(id, &mut *transaction).await?;
for x in open_subscriptions {
let charge =
DBCharge::get_open_subscription(x.id, &mut **transaction)
DBCharge::get_open_subscription(x.id, &mut *transaction)
.await?;
if let Some(mut charge) = charge {
charge.status = ChargeStatus::Cancelled;
@@ -823,7 +822,7 @@ impl DBUser {
deleted_user as DBUserId,
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -833,7 +832,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
sqlx::query!(
@@ -843,7 +842,7 @@ impl DBUser {
",
id as DBUserId,
)
.execute(&mut **transaction)
.execute(&mut *transaction)
.await?;
Ok(Some(()))