Skip to content

Commit

Permalink
chore: refine variable name
Browse files Browse the repository at this point in the history
  • Loading branch information
drmingdrmer committed Feb 27, 2024
1 parent a8c4132 commit 66ff487
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/meta/app/src/principal/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ pub use user_defined_function::UserDefinedFunction;
pub use user_grant::GrantEntry;
pub use user_grant::GrantObject;
pub use user_grant::OwnershipObject;
pub use user_grant::RoleGrantee;
pub use user_grant::TenantOwnershipObject;
pub use user_grant::UserGrantSet;
pub use user_identity::UserIdentity;
pub use user_info::UserInfo;
Expand Down
48 changes: 26 additions & 22 deletions src/meta/app/src/principal/user_grant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ impl OwnershipObject {
}
}

/// The meta-service key of subject to grant a role to.
/// The meta-service key of object whose ownership to grant.
///
/// It could be a tenant's database, a tenant's table etc.
/// It is in form of `__fd_object_owners/<tenant>/<object>`.
Expand All @@ -174,12 +174,12 @@ impl OwnershipObject {
/// - `stage-by-name/<stage_name>`
/// - `udf-by-name/<udf_name>`
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct RoleGrantee {
pub struct TenantOwnershipObject {
tenant: Tenant,
subject: OwnershipObject,
}

impl RoleGrantee {
impl TenantOwnershipObject {
pub fn new(tenant: Tenant, subject: OwnershipObject) -> Self {
// TODO: remove it when we support multiple catalogs
// Legacy issue: Assert compatibility: No other catalog should be used.
Expand All @@ -198,7 +198,7 @@ impl RoleGrantee {
}

pub(crate) fn new_unchecked(tenant: Tenant, subject: OwnershipObject) -> Self {
RoleGrantee { tenant, subject }
TenantOwnershipObject { tenant, subject }
}

/// Return a encoded key prefix for listing keys belongs to the tenant.
Expand Down Expand Up @@ -491,12 +491,12 @@ mod kvapi_key_impl {
use databend_common_meta_kvapi::kvapi;
use databend_common_meta_kvapi::kvapi::KeyError;

use crate::principal::user_grant::RoleGrantee;
use crate::principal::user_grant::TenantOwnershipObject;
use crate::principal::OwnershipInfo;
use crate::principal::OwnershipObject;
use crate::tenant::Tenant;

impl kvapi::Key for RoleGrantee {
impl kvapi::Key for TenantOwnershipObject {
const PREFIX: &'static str = "__fd_object_owners";
type ValueType = OwnershipInfo;

Expand All @@ -516,7 +516,7 @@ mod kvapi_key_impl {
let subject = OwnershipObject::parse_key(&mut p)?;
p.done()?;

Ok(RoleGrantee {
Ok(TenantOwnershipObject {
tenant: Tenant::new(tenant),
subject,
})
Expand All @@ -534,49 +534,53 @@ mod kvapi_key_impl {
mod tests {
use databend_common_meta_kvapi::kvapi::Key;

use crate::principal::user_grant::RoleGrantee;
use crate::principal::user_grant::TenantOwnershipObject;
use crate::principal::OwnershipObject;
use crate::tenant::Tenant;

#[test]
fn test_role_grantee_as_kvapi_key() {
// db with default catalog
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::Database {
let role_grantee = TenantOwnershipObject::new_unchecked(
Tenant::new("test"),
OwnershipObject::Database {
catalog_name: "default".to_string(),
db_id: 1,
});
},
);

let key = role_grantee.to_string_key();
assert_eq!("__fd_object_owners/test/database-by-id/1", key);

let parsed = RoleGrantee::from_str_key(&key).unwrap();
let parsed = TenantOwnershipObject::from_str_key(&key).unwrap();
assert_eq!(role_grantee, parsed);
}

// db with catalog
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::Database {
let role_grantee = TenantOwnershipObject::new_unchecked(
Tenant::new("test"),
OwnershipObject::Database {
catalog_name: "cata/foo".to_string(),
db_id: 1,
});
},
);

let key = role_grantee.to_string_key();
assert_eq!(
"__fd_object_owners/test/database-by-catalog-id/cata%2ffoo/1",
key
);

let parsed = RoleGrantee::from_str_key(&key).unwrap();
let parsed = TenantOwnershipObject::from_str_key(&key).unwrap();
assert_eq!(role_grantee, parsed);
}

// table with default catalog
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::Table {
TenantOwnershipObject::new_unchecked(Tenant::new("test"), OwnershipObject::Table {
catalog_name: "default".to_string(),
db_id: 1,
table_id: 2,
Expand All @@ -593,7 +597,7 @@ mod tests {
// table with catalog
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::Table {
TenantOwnershipObject::new_unchecked(Tenant::new("test"), OwnershipObject::Table {
catalog_name: "cata/foo".to_string(),
db_id: 1,
table_id: 2,
Expand All @@ -613,28 +617,28 @@ mod tests {
// stage
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::Stage {
TenantOwnershipObject::new_unchecked(Tenant::new("test"), OwnershipObject::Stage {
name: "foo".to_string(),
});

let key = role_grantee.to_string_key();
assert_eq!("__fd_object_owners/test/stage-by-name/foo", key);

let parsed = RoleGrantee::from_str_key(&key).unwrap();
let parsed = TenantOwnershipObject::from_str_key(&key).unwrap();
assert_eq!(role_grantee, parsed);
}

// udf
{
let role_grantee =
RoleGrantee::new_unchecked(Tenant::new("test"), OwnershipObject::UDF {
TenantOwnershipObject::new_unchecked(Tenant::new("test"), OwnershipObject::UDF {
name: "foo".to_string(),
});

let key = role_grantee.to_string_key();
assert_eq!("__fd_object_owners/test/udf-by-name/foo", key);

let parsed = RoleGrantee::from_str_key(&key).unwrap();
let parsed = TenantOwnershipObject::from_str_key(&key).unwrap();
assert_eq!(role_grantee, parsed);
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/query/management/src/role/role_mgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ use databend_common_meta_app::app_error::TxnRetryMaxTimes;
use databend_common_meta_app::principal::GrantObject;
use databend_common_meta_app::principal::OwnershipInfo;
use databend_common_meta_app::principal::OwnershipObject;
use databend_common_meta_app::principal::RoleGrantee;
use databend_common_meta_app::principal::RoleInfo;
use databend_common_meta_app::principal::TenantOwnershipObject;
use databend_common_meta_app::principal::UserPrivilegeType;
use databend_common_meta_app::tenant::Tenant;
use databend_common_meta_kvapi::kvapi;
Expand Down Expand Up @@ -108,7 +108,7 @@ impl RoleMgr {

/// Build meta-service for a role grantee, which is a tenant's database, table, stage, udf, etc.
fn grantee_key(&self, object: &OwnershipObject) -> String {
let grantee = RoleGrantee::new(Tenant::new(self.tenant.as_str()), object.clone());
let grantee = TenantOwnershipObject::new(Tenant::new(self.tenant.as_str()), object.clone());
grantee.to_string_key()
}

Expand All @@ -119,7 +119,7 @@ impl RoleMgr {
let dummy = OwnershipObject::UDF {
name: "dummy".to_string(),
};
let grantee = RoleGrantee::new(Tenant::new(self.tenant.as_str()), dummy);
let grantee = TenantOwnershipObject::new(Tenant::new(self.tenant.as_str()), dummy);
grantee.tenant_prefix()
}

Expand Down

0 comments on commit 66ff487

Please sign in to comment.