mintdb 0.1.0-beta.3

MintDB is an open source document based database built in Rust.
Documentation
use std::collections::{BTreeMap, HashMap};

use serde::{Serialize, Deserialize};

use crate::auth::rule::Rule;

use super::document::Document;

#[derive(Serialize, Deserialize, Clone, Debug, Default)]
pub struct Table {
    pub (crate) id: String,
    pub (crate) documents: BTreeMap<String, Document>,
    pub (crate) schema: HashMap<String, String>,
    pub (crate) read: Rule,
    pub (crate) write: Rule,
    pub (crate) delete: Rule,
}
impl Table {
    pub fn new(id: &str) -> Self {
        Table { id: id.to_string(), ..Default::default() }
    }
}
impl From<TableMetadata> for Table {
    fn from(meta: TableMetadata) -> Self {
        Table { id: meta.id,  schema: meta.schema, read: meta.read, write: meta.write, delete: meta.delete, ..Default::default()}
    }
}
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
pub struct TableMetadata {
    pub (crate) id: String,
    pub (crate) schema: HashMap<String, String>,
    pub (crate) read: Rule,
    pub (crate) write: Rule,
    pub (crate) delete: Rule
}
impl TableMetadata {
    pub fn new(id: &str) -> Self {
        TableMetadata { id: id.into(), ..Default::default() }
    }
}
impl From<Table> for TableMetadata {
    fn from(tb: Table) -> Self {
        TableMetadata { 
            id: tb.id, 
            schema: tb.schema, 
            read: tb.read, 
            write: tb.write, 
            delete: tb.delete 
        }
    }
}