69 lines
1.6 KiB
Rust
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>,
|
|
}
|