Skip to main content

uqa_sql/catalog/roles/
guards.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Retained read guards for role and membership catalogs during authorization and publication.
8use super::{RoleDefinition, RoleMembership, RoleMembershipKey};
9use std::{collections::BTreeMap, ops::Deref};
10pub type RoleDefinitionRead<'a> = Box<dyn Deref<Target = BTreeMap<String, RoleDefinition>> + 'a>;
11pub type RoleMembershipRead<'a> =
12    Box<dyn Deref<Target = BTreeMap<RoleMembershipKey, RoleMembership>> + 'a>;
13/// Roles and memberships are acquired separately so validation can retain its original error and lock order.
14pub trait RoleCatalogGuards {
15    fn role_definitions(&self) -> RoleDefinitionRead<'_>;
16    fn role_memberships(&self) -> RoleMembershipRead<'_>;
17}