start/db/ops/
insert.rs

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}