use crate::{IDbRepo, IExecutor, INewDbRepo, ITable, MSQLConnection, SStr, SVec, TableManager};
struct Tbl;
impl ITable for Tbl {
const NAME: SStr = "my_table";
const COLUMNS: SVec<(SStr, SStr)> = &[
("id", "INTEGER PRIMARY KEY"),
("key", "TEXT"),
("value", "TEXT"),
];
const INDEXES: SVec<SStr> = &["key"];
const UNIQUE: SVec<SStr> = &["key"];
}
fn tbl_man() -> TableManager<MSQLConnection, Tbl> {
let cnn = MSQLConnection::new(":memory:").unwrap();
let man = TableManager::create(cnn);
man.init().unwrap();
man
}
#[test]
fn test_insert_select() {
let man = tbl_man();
man.connection
.execute(
&format!("INSERT INTO {t} (key, value) VALUES (?, ?)", t = Tbl::NAME,),
&[&"\'", &"\""],
)
.unwrap();
let str_pairs: Vec<(String, String)> = man
.connection
.get_many(
&format!("SELECT key, value FROM {t}", t = Tbl::NAME),
&[],
|row| Ok((row.get(0)?, row.get(1)?)),
)
.unwrap();
assert_eq!(str_pairs, vec![("\'".to_string(), "\"".to_string())])
}