mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 04:04:43 +08:00
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com> Co-authored-by: Arun Raj M <jarnura47@gmail.com> Co-authored-by: Sampras Lopes <sampras.lopes@juspay.in>
92 lines
2.5 KiB
Rust
92 lines
2.5 KiB
Rust
use common_utils::pii;
|
|
use diesel::{associations::HasTable, ExpressionMethods};
|
|
pub mod sample_data;
|
|
|
|
use crate::{
|
|
query::generics, schema::users::dsl as users_dsl, user::*, PgPooledConn, StorageResult,
|
|
};
|
|
|
|
impl UserNew {
|
|
pub async fn insert(self, conn: &PgPooledConn) -> StorageResult<User> {
|
|
generics::generic_insert(conn, self).await
|
|
}
|
|
}
|
|
|
|
impl User {
|
|
pub async fn find_by_user_email(
|
|
conn: &PgPooledConn,
|
|
user_email: &pii::Email,
|
|
) -> StorageResult<Self> {
|
|
generics::generic_find_one::<<Self as HasTable>::Table, _, _>(
|
|
conn,
|
|
users_dsl::email.eq(user_email.to_owned()),
|
|
)
|
|
.await
|
|
}
|
|
|
|
pub async fn find_by_user_id(conn: &PgPooledConn, user_id: &str) -> StorageResult<Self> {
|
|
generics::generic_find_one::<<Self as HasTable>::Table, _, _>(
|
|
conn,
|
|
users_dsl::user_id.eq(user_id.to_owned()),
|
|
)
|
|
.await
|
|
}
|
|
|
|
pub async fn update_by_user_id(
|
|
conn: &PgPooledConn,
|
|
user_id: &str,
|
|
user_update: UserUpdate,
|
|
) -> StorageResult<Self> {
|
|
generics::generic_update_with_unique_predicate_get_result::<
|
|
<Self as HasTable>::Table,
|
|
_,
|
|
_,
|
|
_,
|
|
>(
|
|
conn,
|
|
users_dsl::user_id.eq(user_id.to_owned()),
|
|
UserUpdateInternal::from(user_update),
|
|
)
|
|
.await
|
|
}
|
|
|
|
pub async fn update_by_user_email(
|
|
conn: &PgPooledConn,
|
|
user_email: &pii::Email,
|
|
user_update: UserUpdate,
|
|
) -> StorageResult<Self> {
|
|
generics::generic_update_with_unique_predicate_get_result::<
|
|
<Self as HasTable>::Table,
|
|
_,
|
|
_,
|
|
_,
|
|
>(
|
|
conn,
|
|
users_dsl::email.eq(user_email.to_owned()),
|
|
UserUpdateInternal::from(user_update),
|
|
)
|
|
.await
|
|
}
|
|
|
|
pub async fn delete_by_user_id(conn: &PgPooledConn, user_id: &str) -> StorageResult<bool> {
|
|
generics::generic_delete::<<Self as HasTable>::Table, _>(
|
|
conn,
|
|
users_dsl::user_id.eq(user_id.to_owned()),
|
|
)
|
|
.await
|
|
}
|
|
|
|
pub async fn find_users_by_user_ids(
|
|
conn: &PgPooledConn,
|
|
user_ids: Vec<String>,
|
|
) -> StorageResult<Vec<Self>> {
|
|
generics::generic_filter::<
|
|
<Self as HasTable>::Table,
|
|
_,
|
|
<<Self as HasTable>::Table as diesel::Table>::PrimaryKey,
|
|
_,
|
|
>(conn, users_dsl::user_id.eq_any(user_ids), None, None, None)
|
|
.await
|
|
}
|
|
}
|