drive/util/batch/drive_op_batch/
group.rs1use crate::drive::Drive;
2use crate::error::Error;
3use crate::fees::op::LowLevelDriveOperation;
4use crate::util::batch::drive_op_batch::DriveLowLevelOperationConverter;
5use dpp::block::block_info::BlockInfo;
6use dpp::data_contract::group::GroupMemberPower;
7use dpp::data_contract::GroupContractPosition;
8use dpp::group::group_action::GroupAction;
9use dpp::identifier::Identifier;
10use grovedb::batch::KeyInfoPath;
11use grovedb::{EstimatedLayerInformation, TransactionArg};
12use platform_version::version::PlatformVersion;
13use std::collections::HashMap;
14
15#[derive(Clone, Debug)]
17pub enum GroupOperationType {
18 AddGroupAction {
20 contract_id: Identifier,
22 group_contract_position: GroupContractPosition,
24 initialize_with_insert_action_info: Option<GroupAction>,
26 action_id: Identifier,
28 signer_identity_id: Identifier,
30 signer_power: GroupMemberPower,
32 closes_group_action: bool,
34 },
35}
36
37impl DriveLowLevelOperationConverter for GroupOperationType {
38 fn into_low_level_drive_operations(
39 self,
40 drive: &Drive,
41 estimated_costs_only_with_layer_info: &mut Option<
42 HashMap<KeyInfoPath, EstimatedLayerInformation>,
43 >,
44 block_info: &BlockInfo,
45 transaction: TransactionArg,
46 platform_version: &PlatformVersion,
47 ) -> Result<Vec<LowLevelDriveOperation>, Error> {
48 match self {
49 GroupOperationType::AddGroupAction {
50 contract_id,
51 group_contract_position,
52 initialize_with_insert_action_info,
53 action_id,
54 signer_identity_id,
55 signer_power,
56 closes_group_action,
57 } => drive.add_group_action_operations(
58 contract_id,
59 group_contract_position,
60 initialize_with_insert_action_info,
61 closes_group_action,
62 action_id,
63 signer_identity_id,
64 signer_power,
65 block_info,
66 estimated_costs_only_with_layer_info,
67 transaction,
68 platform_version,
69 ),
70 }
71 }
72}