Files
azure-database-tui/src/domain/permissions.rs
T
Louis Frei 8dda5dcf23
validate / macos-arm64 (push) Canceled after 0s
validate / windows-x86_64 (push) Canceled after 0s
feat: current state
2026-08-13 20:18:30 +02:00

69 lines
1.6 KiB
Rust

use crate::domain::ids::{AzureResourceId, DatabaseId, RoleName};
use crate::error::SafeError;
#[derive(Debug, Clone)]
pub struct DesiredPrivilegeProfile {
pub role: RoleName,
pub databases: Vec<DatabaseId>,
}
#[derive(Debug, Clone)]
pub enum PrivilegeScope {
Database,
Schema(String),
Table { schema: String, table: String },
Sequence { schema: String, sequence: String },
Function { schema: String, function: String },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PrivilegeKind {
Connect,
Usage,
Create,
Select,
Insert,
Update,
Delete,
Truncate,
References,
Trigger,
Execute,
}
#[derive(Debug, Clone)]
pub struct RoleMembershipIntent {
pub role: RoleName,
pub grantable: bool,
}
#[derive(Debug, Clone)]
pub enum Grantability {
Grantable,
NotGrantable(&'static str),
}
#[derive(Debug, Clone)]
pub struct PlanOperation {
pub scope: PrivilegeScope,
pub privilege: PrivilegeKind,
}
#[derive(Debug, Clone)]
pub struct DatabasePermissionPlan {
pub database: DatabaseId,
pub operations: Vec<PlanOperation>,
}
#[derive(Debug, Clone)]
pub struct PermissionPlan {
pub target_server: AzureResourceId,
pub target_role: RoleName,
pub databases: Vec<DatabasePermissionPlan>,
pub memberships: Vec<RoleMembershipIntent>,
pub password_will_be_set: bool,
}
#[derive(Debug, Clone)]
pub enum PlanStepResult {
Succeeded,
Failed(SafeError),
Skipped(&'static str),
}
#[derive(Debug, Clone)]
pub struct PlanResult {
pub database: Option<DatabaseId>,
pub steps: Vec<PlanStepResult>,
}