Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b21a4f9
fix(user_roles): prepare user_role intermediate stage
apoorvdixit88 Jul 17, 2024
7d96185
Merge branch 'main' into make-org-merchant-id-nullable-user-role
apoorvdixit88 Jul 17, 2024
5f9e148
chore: run formatter
hyperswitch-bot[bot] Jul 17, 2024
7a95760
feat: add version enum and fix compilation
ThisIsMani Jul 17, 2024
6685c28
feat: add version filter in user_role queries
ThisIsMani Jul 18, 2024
1d97ec4
refactor: fix typos and remove clippy overrides
ThisIsMani Jul 22, 2024
c044339
Merge branch 'main' of https://github.com/juspay/hyperswitch into mak…
ThisIsMani Jul 22, 2024
e66e6ec
fix: schema consistency
ThisIsMani Jul 23, 2024
08551bb
Merge branch 'main' of https://github.com/juspay/hyperswitch into mak…
ThisIsMani Jul 23, 2024
ad42f83
feat: make id as primary key again
ThisIsMani Jul 23, 2024
7f4fba3
fix: schema v2 consistency
ThisIsMani Jul 23, 2024
7dd6501
refactor: format SQL files
ThisIsMani Jul 23, 2024
7164c76
refactor: make errors consistent
ThisIsMani Jul 24, 2024
d7dc64a
refactor: make errors consistent for org_id
ThisIsMani Jul 24, 2024
fb5c42c
Merge branch 'main' of https://github.com/juspay/hyperswitch into mak…
ThisIsMani Jul 24, 2024
a9e0b95
refactor: add attach_printables for missing ones
ThisIsMani Jul 24, 2024
f568464
refactor: add safety comment in migration
ThisIsMani Jul 24, 2024
11786a4
fix: change profile_id and entity_id length in user_roles to 64
ThisIsMani Jul 24, 2024
1adaa5a
fix: schema v2 consistency
ThisIsMani Jul 24, 2024
eba8e4d
Merge branch 'main' of https://github.com/juspay/hyperswitch into mak…
ThisIsMani Jul 25, 2024
ad4d85d
Merge branch 'main' of https://github.com/juspay/hyperswitch into mak…
ThisIsMani Jul 25, 2024
e98a16e
refactor: add attach_printables for missing ones
ThisIsMani Jul 25, 2024
734fb88
chore: run formatter
hyperswitch-bot[bot] Jul 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion crates/diesel_models/src/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ pub mod diesel_exports {
DbRequestIncrementalAuthorization as RequestIncrementalAuthorization,
DbRoleScope as RoleScope, DbRoutingAlgorithmKind as RoutingAlgorithmKind,
DbTotpStatus as TotpStatus, DbTransactionType as TransactionType,
DbUserStatus as UserStatus, DbWebhookDeliveryAttempt as WebhookDeliveryAttempt,
DbUserRoleVersion as UserRoleVersion, DbUserStatus as UserStatus,
DbWebhookDeliveryAttempt as WebhookDeliveryAttempt,
};
}
pub use common_enums::*;
Expand Down Expand Up @@ -298,3 +299,24 @@ pub enum TotpStatus {
#[default]
NotSet,
}

#[derive(
Clone,
Copy,
Debug,
Default,
Eq,
PartialEq,
serde::Serialize,
serde::Deserialize,
strum::EnumString,
strum::Display,
)]
#[diesel_enum(storage_type = "db_enum")]
#[serde(rename_all = "snake_case")]
#[strum(serialize_all = "snake_case")]
pub enum UserRoleVersion {
#[default]
V1,
V2,
}
44 changes: 34 additions & 10 deletions crates/diesel_models/src/query/user_role.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
use common_utils::id_type;
use diesel::{associations::HasTable, BoolExpressionMethods, ExpressionMethods};

use crate::{query::generics, schema::user_roles::dsl, user_role::*, PgPooledConn, StorageResult};
use crate::{
enums::UserRoleVersion, query::generics, schema::user_roles::dsl, user_role::*, PgPooledConn,
StorageResult,
};

impl UserRoleNew {
pub async fn insert(self, conn: &PgPooledConn) -> StorageResult<UserRole> {
Expand All @@ -10,10 +13,14 @@ impl UserRoleNew {
}

impl UserRole {
pub async fn find_by_user_id(conn: &PgPooledConn, user_id: String) -> StorageResult<Self> {
pub async fn find_by_user_id(
conn: &PgPooledConn,
user_id: String,
version: UserRoleVersion,
) -> StorageResult<Self> {
generics::generic_find_one::<<Self as HasTable>::Table, _, _>(
conn,
dsl::user_id.eq(user_id),
dsl::user_id.eq(user_id).and(dsl::version.eq(version)),
)
.await
}
Expand All @@ -22,12 +29,14 @@ impl UserRole {
conn: &PgPooledConn,
user_id: String,
merchant_id: id_type::MerchantId,
version: UserRoleVersion,
) -> StorageResult<Self> {
generics::generic_find_one::<<Self as HasTable>::Table, _, _>(
conn,
dsl::user_id
.eq(user_id)
.and(dsl::merchant_id.eq(merchant_id)),
.and(dsl::merchant_id.eq(merchant_id))
.and(dsl::version.eq(version)),
)
.await
}
Expand All @@ -37,6 +46,7 @@ impl UserRole {
user_id: String,
merchant_id: id_type::MerchantId,
update: UserRoleUpdate,
version: UserRoleVersion,
) -> StorageResult<Self> {
generics::generic_update_with_unique_predicate_get_result::<
<Self as HasTable>::Table,
Expand All @@ -47,7 +57,8 @@ impl UserRole {
conn,
dsl::user_id
.eq(user_id)
.and(dsl::merchant_id.eq(merchant_id)),
.and(dsl::merchant_id.eq(merchant_id))
.and(dsl::version.eq(version)),
UserRoleUpdateInternal::from(update),
)
.await
Expand All @@ -58,10 +69,14 @@ impl UserRole {
user_id: String,
org_id: id_type::OrganizationId,
update: UserRoleUpdate,
version: UserRoleVersion,
) -> StorageResult<Vec<Self>> {
generics::generic_update_with_results::<<Self as HasTable>::Table, _, _, _>(
conn,
dsl::user_id.eq(user_id).and(dsl::org_id.eq(org_id)),
dsl::user_id
.eq(user_id)
.and(dsl::org_id.eq(org_id))
.and(dsl::version.eq(version)),
UserRoleUpdateInternal::from(update),
)
.await
Expand All @@ -71,20 +86,26 @@ impl UserRole {
conn: &PgPooledConn,
user_id: String,
merchant_id: id_type::MerchantId,
version: UserRoleVersion,
) -> StorageResult<Self> {
generics::generic_delete_one_with_result::<<Self as HasTable>::Table, _, _>(
conn,
dsl::user_id
.eq(user_id)
.and(dsl::merchant_id.eq(merchant_id)),
.and(dsl::merchant_id.eq(merchant_id))
.and(dsl::version.eq(version)),
)
.await
}

pub async fn list_by_user_id(conn: &PgPooledConn, user_id: String) -> StorageResult<Vec<Self>> {
pub async fn list_by_user_id(
conn: &PgPooledConn,
user_id: String,
version: UserRoleVersion,
) -> StorageResult<Vec<Self>> {
generics::generic_filter::<<Self as HasTable>::Table, _, _, _>(
conn,
dsl::user_id.eq(user_id),
dsl::user_id.eq(user_id).and(dsl::version.eq(version)),
None,
None,
Some(dsl::created_at.asc()),
Expand All @@ -95,10 +116,13 @@ impl UserRole {
pub async fn list_by_merchant_id(
conn: &PgPooledConn,
merchant_id: id_type::MerchantId,
version: UserRoleVersion,
) -> StorageResult<Vec<Self>> {
generics::generic_filter::<<Self as HasTable>::Table, _, _, _>(
conn,
dsl::merchant_id.eq(merchant_id),
dsl::merchant_id
.eq(merchant_id)
.and(dsl::version.eq(version)),
None,
None,
Some(dsl::created_at.asc()),
Expand Down
13 changes: 10 additions & 3 deletions crates/diesel_models/src/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1243,23 +1243,30 @@ diesel::table! {
use diesel::sql_types::*;
use crate::enums::diesel_exports::*;

user_roles (user_id, merchant_id) {
user_roles (id) {
id -> Int4,
#[max_length = 64]
user_id -> Varchar,
#[max_length = 64]
merchant_id -> Varchar,
merchant_id -> Nullable<Varchar>,
#[max_length = 64]
role_id -> Varchar,
#[max_length = 64]
org_id -> Varchar,
org_id -> Nullable<Varchar>,
status -> UserStatus,
#[max_length = 64]
created_by -> Varchar,
#[max_length = 64]
last_modified_by -> Varchar,
created_at -> Timestamp,
last_modified -> Timestamp,
#[max_length = 64]
profile_id -> Nullable<Varchar>,
#[max_length = 64]
entity_id -> Nullable<Varchar>,
#[max_length = 64]
entity_type -> Nullable<Varchar>,
version -> UserRoleVersion,
}
}

Expand Down
13 changes: 10 additions & 3 deletions crates/diesel_models/src/schema_v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1252,23 +1252,30 @@ diesel::table! {
use diesel::sql_types::*;
use crate::enums::diesel_exports::*;

user_roles (user_id, merchant_id) {
user_roles (id) {
id -> Int4,
#[max_length = 64]
user_id -> Varchar,
#[max_length = 64]
merchant_id -> Varchar,
merchant_id -> Nullable<Varchar>,
#[max_length = 64]
role_id -> Varchar,
#[max_length = 64]
org_id -> Varchar,
org_id -> Nullable<Varchar>,
status -> UserStatus,
#[max_length = 64]
created_by -> Varchar,
#[max_length = 64]
last_modified_by -> Varchar,
created_at -> Timestamp,
last_modified -> Timestamp,
#[max_length = 64]
profile_id -> Nullable<Varchar>,
#[max_length = 64]
entity_id -> Nullable<Varchar>,
#[max_length = 64]
entity_type -> Nullable<Varchar>,
version -> UserRoleVersion,
}
}

Expand Down
16 changes: 12 additions & 4 deletions crates/diesel_models/src/user_role.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,36 @@ use crate::{enums, schema::user_roles};
pub struct UserRole {
pub id: i32,
pub user_id: String,
pub merchant_id: id_type::MerchantId,
pub merchant_id: Option<id_type::MerchantId>,
pub role_id: String,
pub org_id: id_type::OrganizationId,
pub org_id: Option<id_type::OrganizationId>,
pub status: enums::UserStatus,
pub created_by: String,
pub last_modified_by: String,
pub created_at: PrimitiveDateTime,
pub last_modified: PrimitiveDateTime,
pub profile_id: Option<String>,
pub entity_id: Option<String>,
pub entity_type: Option<String>,
pub version: enums::UserRoleVersion,
}

#[derive(router_derive::Setter, Clone, Debug, Insertable, router_derive::DebugAsDisplay)]
#[diesel(table_name = user_roles)]
pub struct UserRoleNew {
pub user_id: String,
pub merchant_id: id_type::MerchantId,
pub merchant_id: Option<id_type::MerchantId>,
pub role_id: String,
pub org_id: id_type::OrganizationId,
pub org_id: Option<id_type::OrganizationId>,
pub status: enums::UserStatus,
pub created_by: String,
pub last_modified_by: String,
pub created_at: PrimitiveDateTime,
pub last_modified: PrimitiveDateTime,
pub profile_id: Option<String>,
pub entity_id: Option<String>,
pub entity_type: Option<String>,
pub version: enums::UserRoleVersion,
}

#[derive(Clone, Debug, AsChangeset, router_derive::DebugAsDisplay)]
Expand Down
Loading