drive/util/grove_operations/batch_insert/
mod.rs

1mod v0;
2
3use crate::drive::Drive;
4use crate::error::drive::DriveError;
5use crate::error::Error;
6use crate::fees::op::LowLevelDriveOperation;
7use crate::util::object_size_info::PathKeyElementInfo;
8use dpp::version::drive_versions::DriveVersion;
9
10impl Drive {
11    /// Pushes an "insert element" operation to `drive_operations`.
12    ///
13    /// # Parameters
14    /// * `path_key_element_info`: The key information of the document and element to insert.
15    /// * `drive_operations`: The vector containing low-level drive operations.
16    /// * `drive_version`: The drive version to select the correct function version to run.
17    ///
18    /// # Returns
19    /// * `Ok(())` if the operation was successful.
20    /// * `Err(DriveError::UnknownVersionMismatch)` if the drive version does not match known versions.
21    pub fn batch_insert<const N: usize>(
22        &self,
23        path_key_element_info: PathKeyElementInfo<N>,
24        drive_operations: &mut Vec<LowLevelDriveOperation>,
25        drive_version: &DriveVersion,
26    ) -> Result<(), Error> {
27        match drive_version.grove_methods.batch.batch_insert {
28            0 => self.batch_insert_v0(path_key_element_info, drive_operations),
29            version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
30                method: "batch_insert".to_string(),
31                known_versions: vec![0],
32                received: version,
33            })),
34        }
35    }
36}