irondb 0.1.0

Key-value storage engine
Documentation
use std::{fmt::Debug, vec};
use super::dblock::Dblock;

#[derive(Debug,PartialEq, Eq, Clone)]
pub struct Db<A, B> {
    pub datablocks: Box<Vec<Dblock<A, B>>>,
    pub id: &'static str,
}

impl<A: PartialEq + Debug + Clone, B: PartialEq + Debug+ Clone> Db<A, B> {
    pub fn new(id: &'static str) -> Self {
        Self {datablocks: Box::new(vec![]), id}
    }
    
    pub fn save(&mut self, block: Dblock<A, B>) {
        self.datablocks.push(block);
    }
    
    pub fn getbp(&self, key: A) -> i32 {
        for i in 0..self.datablocks.len() {
            if self.datablocks.get(i).unwrap().key == key {
                println!("{:?}", self.datablocks.get(i).unwrap());
                return 0;
            }
        }
        return 1;


    } 

    pub fn getb(&self, key: A) -> Result<Dblock<A, B>, &'static str>{
        for i in 0..self.datablocks.len() {
            if self.datablocks.get(i).unwrap().key == key {
                return Ok(Dblock::new(self.datablocks.get(i).unwrap().key.clone(), self.datablocks.get(i).unwrap().data.clone()));
            }
        }

        return Err("no such block");
    }

    pub fn remove(&mut self, key: A) -> i32 {
        for i in 0..self.datablocks.len() {
            if self.datablocks.get(i).unwrap().key == key {
                self.datablocks.remove(i);
                return 0;
            }
        }
        return 1;
    }

}