Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions lib/dal/src/approval_requirement.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,16 +193,6 @@ impl ApprovalRequirementDefinition {
Err(ApprovalRequirementError::EntityNotFound(entity_id))
}

/// Used by the incomplete implementation of approval requirements in the split snapshot.
/// Delete when approval requirements implemented
pub fn fake() -> Self {
Self {
id: ApprovalRequirementDefinitionId::new(),
required_count: 0,
approvers: HashSet::new(),
}
}

pub fn assemble(
id: ApprovalRequirementDefinitionId,
content: ApprovalRequirementDefinitionContentV1,
Expand Down
2 changes: 2 additions & 0 deletions lib/dal/src/workspace_snapshot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ pub enum WorkspaceSnapshotError {
CorrectTransformsSplit(#[from] split_snapshot::corrections::CorrectTransformsError),
#[error("Action would create a graph cycle")]
CreateGraphCycle,
#[error("Entity not found for Approval Requirement Definition Id: {0}")]
EntityNotFoundForApprovalRequirementDefinition(ApprovalRequirementDefinitionId),
#[error("InferredConnectionGraph error: {0}")]
InferredConnectionGraph(#[from] Box<InferredConnectionGraphError>),
#[error("InputSocket error: {0}")]
Expand Down
17 changes: 8 additions & 9 deletions lib/dal/src/workspace_snapshot/graph/v4/approval_requirement.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,7 @@ impl ApprovalRequirementExt for WorkspaceSnapshotGraphV4 {
// If we did not find any explicit requirements, check if we need to create virtual
// requirements.
if explicit_approval_requirement_definition_ids.is_empty() {
if let Some(virtual_rule) = new_virtual_requirement_rule(workspace_id, change)?
{
if let Some(virtual_rule) = new_virtual_requirement_rule(workspace_id, change) {
virtual_approval_requirement_rules.push(virtual_rule);
}
}
Expand Down Expand Up @@ -240,18 +239,18 @@ impl ApprovalRequirementExt for WorkspaceSnapshotGraphV4 {
}
}

fn new_virtual_requirement_rule(
pub fn new_virtual_requirement_rule(
workspace_id: WorkspacePk,
change: &Change,
) -> WorkspaceSnapshotGraphResult<Option<ApprovalRequirementRule>> {
) -> Option<ApprovalRequirementRule> {
match change.entity_kind {
// Default approval requirement rule for actions, funcs, schemas, schema variants,
// and views until we get proper fallback logic for who should be approving what.
EntityKind::Action
| EntityKind::Func
| EntityKind::Schema
| EntityKind::SchemaVariant
| EntityKind::View => Ok(Some(ApprovalRequirementRule {
| EntityKind::View => Some(ApprovalRequirementRule {
entity_id: change.entity_id,
entity_kind: change.entity_kind,
minimum: 1,
Expand All @@ -262,10 +261,10 @@ fn new_virtual_requirement_rule(
permission: "approve".to_string(),
},
)]),
})),
}),
// For any changes to explicit approval requirements, we need approvals from
// workspace approvers.
EntityKind::ApprovalRequirementDefinition => Ok(Some(ApprovalRequirementRule {
EntityKind::ApprovalRequirementDefinition => Some(ApprovalRequirementRule {
entity_id: change.entity_id,
entity_kind: change.entity_kind,
minimum: 1,
Expand All @@ -276,7 +275,7 @@ fn new_virtual_requirement_rule(
permission: "approve".to_string(),
},
)]),
})),
_ => Ok(None),
}),
_ => None,
}
}
86 changes: 2 additions & 84 deletions lib/dal/src/workspace_snapshot/split_snapshot.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
use std::{
collections::{
HashMap,
HashSet,
},
collections::HashSet,
sync::{
Arc,
atomic::AtomicBool,
Expand All @@ -25,14 +22,12 @@ use si_events::{
ContentHash,
Timestamp,
WorkspaceSnapshotAddress,
merkle_tree_hash::MerkleTreeHash,
workspace_snapshot::{
Change,
EntityKind,
},
};
use si_id::{
ApprovalRequirementDefinitionId,
AttributeValueId,
ChangeSetId,
ComponentId,
Expand All @@ -41,7 +36,6 @@ use si_id::{
PropId,
SchemaId,
SchemaVariantId,
UserPk,
ViewId,
ulid::Ulid,
};
Expand Down Expand Up @@ -92,7 +86,6 @@ use super::{
category_node_weight::CategoryNodeKind,
},
traits::{
approval_requirement::ApprovalRequirementExt,
diagram::view::ViewExt,
prop::PropExt,
socket::input::input_socket_from_node_weight,
Expand All @@ -107,11 +100,6 @@ use crate::{
InputSocket,
NodeWeightDiscriminants,
SchemaVariantError,
approval_requirement::{
ApprovalRequirement,
ApprovalRequirementApprover,
ApprovalRequirementDefinition,
},
component::{
ComponentResult,
inferred_connection_graph::InferredConnectionGraph,
Expand All @@ -125,6 +113,7 @@ use crate::{
socket::input::InputSocketError,
};

pub mod approval_requirement;
pub mod corrections;

pub type SplitSnapshotGraphV1 = SplitGraph<NodeWeight, EdgeWeight, EdgeWeightKindDiscriminants>;
Expand Down Expand Up @@ -1339,77 +1328,6 @@ impl SplitSnapshot {
)?)
}
}
#[async_trait]
impl ApprovalRequirementExt for SplitSnapshot {
async fn new_definition(
&self,
_ctx: &DalContext,
_entity_id: Ulid,
_minimum_approvers_count: usize,
_approvers: HashSet<ApprovalRequirementApprover>,
) -> WorkspaceSnapshotResult<ApprovalRequirementDefinitionId> {
// XXX: implement
Ok(ApprovalRequirementDefinitionId::new())
}

async fn remove_definition(
&self,
_approval_requirement_definition_id: ApprovalRequirementDefinitionId,
) -> WorkspaceSnapshotResult<()> {
// XXX: implement
Ok(())
}

async fn add_individual_approver_for_definition(
&self,
_ctx: &DalContext,
_id: ApprovalRequirementDefinitionId,
_user_id: UserPk,
) -> WorkspaceSnapshotResult<()> {
Ok(())
}

async fn remove_individual_approver_for_definition(
&self,
_ctx: &DalContext,
_id: ApprovalRequirementDefinitionId,
_user_id: UserPk,
) -> WorkspaceSnapshotResult<()> {
Ok(())
}

async fn approval_requirements_for_changes(
&self,
_ctx: &DalContext,
_changes: &[Change],
) -> WorkspaceSnapshotResult<(Vec<ApprovalRequirement>, HashMap<EntityId, MerkleTreeHash>)>
{
Ok((Vec::new(), HashMap::new()))
}

async fn approval_requirement_definitions_for_entity_id_opt(
&self,
_ctx: &DalContext,
_entity_id: EntityId,
) -> WorkspaceSnapshotResult<Option<Vec<ApprovalRequirementDefinition>>> {
Ok(None)
}

async fn entity_id_for_approval_requirement_definition_id(
&self,
_id: ApprovalRequirementDefinitionId,
) -> WorkspaceSnapshotResult<EntityId> {
Ok(EntityId::new())
}

async fn get_approval_requirement_definition_by_id(
&self,
_ctx: &DalContext,
_id: ApprovalRequirementDefinitionId,
) -> WorkspaceSnapshotResult<ApprovalRequirementDefinition> {
Ok(ApprovalRequirementDefinition::fake())
}
}

#[async_trait]
impl InputSocketExt for SplitSnapshot {
Expand Down
Loading