Added record entry.
This commit is contained in:
parent
58aba1a565
commit
6983ee366d
@ -1,4 +1,5 @@
|
|||||||
use std::{fmt, str};
|
use super::DBError;
|
||||||
|
use std::{collections::HashMap, fmt, str};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum CacheType {
|
pub enum CacheType {
|
||||||
@ -7,11 +8,25 @@ pub enum CacheType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Record;
|
pub struct Record {
|
||||||
|
data: HashMap<String, String>
|
||||||
|
}
|
||||||
|
|
||||||
impl Record {
|
impl Record {
|
||||||
fn new() -> Self {
|
fn new() -> Self {
|
||||||
Self {}
|
Self {
|
||||||
|
data: HashMap::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add_field(&mut self, col: &str, data: &str) -> Result<(), DBError> {
|
||||||
|
match self.data.get(col) {
|
||||||
|
Some(_) => Err(DBError::new("duplicate field")),
|
||||||
|
None => {
|
||||||
|
self.data.insert(col.to_string(), data.to_string());
|
||||||
|
Ok(())
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,3 +112,26 @@ mod enum_ctype {
|
|||||||
assert_eq!(holder.entry_type(), "Record");
|
assert_eq!(holder.entry_type(), "Record");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod record {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn store() {
|
||||||
|
let mut rec = Record::new();
|
||||||
|
rec.add_field("column", "data").unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_duplicate_fields() {
|
||||||
|
let mut rec = Record::new();
|
||||||
|
rec.add_field("dup", "datai1").unwrap();
|
||||||
|
match rec.add_field("dup", "datai2") {
|
||||||
|
Ok(_) => assert!(false, "Should have raised an error."),
|
||||||
|
Err(err) => {
|
||||||
|
assert_eq!(err.to_string(), "duplicate field");
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user