neuxdb 0.1.0

A super simple, embedded, encrypted database like SQLite, using pipe-separated files and age encryption.
Documentation
use super::save_chema::save_schema;
use crate::config;
use crate::error::{NeuxDbError, Result};
use crate::types::TableSchema;
use csv::WriterBuilder;
use fs2::FileExt;
use std::fs::File;
pub fn create_table_schema(name: &str, columns: &[String]) -> Result<()> {
    let path = config::table_path(name)?;
    if path.exists() {
        return Err(NeuxDbError::TableAlreadyExists(name.to_string()));
    }
    let schema = TableSchema::new(columns.to_vec());
    save_schema(name, &schema)?;
    let file = File::create(&path)?;
    file.lock_exclusive()
        .map_err(|e| NeuxDbError::Lock(format!("Failed to lock: {}", e)))?;
    let mut wtr = WriterBuilder::new()
        .delimiter(config::delimiter_byte())
        .from_writer(file);
    wtr.write_record(columns)?;
    wtr.flush()?;
    Ok(())
}