squaredb_fm 1.0.0-beta

Squaredb - Enhance your DB with extendability and performance.
Documentation
use serde:: {
  Serialize,
  Deserialize
};
use std::collections::HashMap;

#[derive(Serialize, Deserialize, Debug)]
pub struct Table {
  pub name: String,
  pub row_names: Vec<String>,
  pub default_values: HashMap<String,
  String>,
  pub required_columns: Vec<String>,
  pub locked_columns: Vec<String>,
  pub data_types: HashMap<String,
  String>,
}

pub trait TableT {
  fn new(
    name: &str,
    row_names: Vec<String>,
    default_values: HashMap<String, String>,
    required_columns: Vec<String>,
    locked_columns: Vec<String>,
    data_types: HashMap<String, String>,
  ) -> Self;

  fn to_table(data: &String) -> Result<Self,
  serde_json::Error> where Self: Sized;

  fn to_string(&self) -> String;
}

impl TableT for Table {
  fn new(
    name: &str,
    row_names: Vec<String>,
    default_values: HashMap<String, String>,
    required_columns: Vec<String>,
    locked_columns: Vec<String>,
    data_types: HashMap<String, String>,
  ) -> Self {
    Table {
      name: name.to_string(),
      // Initialize other fields accordingly
      row_names,
      default_values,
      required_columns,
      locked_columns,
      data_types,
    }
  }

  fn to_table(data: &String) -> Result<Self,
  serde_json::Error> {
    serde_json::from_str(data)
  }

  fn to_string(&self) -> String {
    serde_json::to_string(self).unwrap()
  }
}