1use crate::{db::{catalog::collection::RawDocument, collection::Collection, operation_context::{ensure_capacity, OperationContext}, recovery_unit::RecoveryUnit, storage::start_storage::StartStorage}, HandleResult};
2
3pub fn insert(
4 op_ctx: &mut OperationContext,
5 col: &mut Collection,
6 data: &[u8]
7) -> usize {
8 col.insert_document(op_ctx, data)
9}
10
11pub fn insert_one_by_offset(
12 op_ctx: &mut OperationContext,
13 offset: usize,
14 raw_document: RawDocument
15) -> HandleResult<()> {
16 let rc_unit = op_ctx.rc_unit();
17 if ensure_capacity(&mut op_ctx.storage().borrow_mut(), offset + raw_document.len()).is_err() {
18 return Err("Database capacity error".into());
19 }
20 RawDocument::write_next_document(rc_unit.borrow_mut(), offset, 0);
21 RawDocument::write_content_length(rc_unit.borrow_mut(), offset, raw_document.content_length as usize);
22 RawDocument::write_content(rc_unit.borrow_mut(), offset, &raw_document.content);
23 Ok(())
24}