use std::sync::Arc;
use crate::control::security::catalog::StoredOwner;
use crate::control::state::SharedState;
pub(super) fn install_from_parent(
object_type: &'static str,
tenant_id: u64,
object_name: &str,
owner_username: &str,
shared: &SharedState,
) {
install_from_parent_in_database(
object_type,
0,
tenant_id,
object_name,
owner_username,
shared,
);
}
pub(super) fn install_from_parent_in_database(
object_type: &'static str,
database_id: u64,
tenant_id: u64,
object_name: &str,
owner_username: &str,
shared: &SharedState,
) {
shared.permissions.install_replicated_owner(&StoredOwner {
database_id,
object_type: object_type.to_string(),
object_name: object_name.to_string(),
tenant_id,
owner_username: owner_username.to_string(),
});
}
pub fn put(stored: StoredOwner, shared: Arc<SharedState>) {
shared.permissions.install_replicated_owner(&stored);
tracing::debug!(
object_type = %stored.object_type,
tenant = stored.tenant_id,
object = %stored.object_name,
owner = %stored.owner_username,
"post_apply: owner replicated"
);
}
pub fn delete(
object_type: String,
database_id: u64,
tenant_id: u64,
object_name: String,
shared: Arc<SharedState>,
) {
let removed = shared
.permissions
.install_replicated_remove_owner_in_database(
&object_type,
database_id,
tenant_id,
&object_name,
);
tracing::debug!(
%object_type, tenant = tenant_id, %object_name, removed,
"post_apply: owner removed"
);
}