mod test_db;
use agdb::DbElement;
use agdb::DbId;
use agdb::DbValue;
use agdb::QueryBuilder;
use test_db::TestDb;
#[test]
fn select_keys_ids() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases("alias")
.values([[
("key", 100).into(),
(1, "value").into(),
(vec![1.1_f64], 1).into(),
]])
.query(),
1,
);
db.exec_elements(
QueryBuilder::select().keys().ids("alias").query(),
&[DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![
("key", DbValue::default()).into(),
(1, DbValue::default()).into(),
(vec![1.1_f64], DbValue::default()).into(),
],
}],
);
}
#[test]
fn select_keys_no_keys() {
let mut db = TestDb::new();
db.exec_mut(QueryBuilder::insert().nodes().aliases("alias").query(), 1);
db.exec_elements(
QueryBuilder::select().keys().ids("alias").query(),
&[DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![],
}],
);
}
#[test]
fn select_keys_search() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.count(5)
.values_uniform([
("key1", 1).into(),
("key2", 10).into(),
("key3", 100).into(),
])
.query(),
5,
);
db.exec_mut(
QueryBuilder::insert()
.edges()
.from([1, 3])
.to([3, 5])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select()
.keys()
.ids(QueryBuilder::search().from(3).query())
.query(),
&[
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![
("key1", DbValue::default()).into(),
("key2", DbValue::default()).into(),
("key3", DbValue::default()).into(),
],
},
DbElement {
id: DbId(-7),
from: Some(DbId(3)),
to: Some(DbId(5)),
values: vec![],
},
DbElement {
id: DbId(5),
from: None,
to: None,
values: vec![
("key1", DbValue::default()).into(),
("key2", DbValue::default()).into(),
("key3", DbValue::default()).into(),
],
},
],
);
}
#[test]
fn select_keys_search_alt() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.count(5)
.values_uniform([
("key1", 1).into(),
("key2", 10).into(),
("key3", 100).into(),
])
.query(),
5,
);
db.exec_mut(
QueryBuilder::insert()
.edges()
.from([1, 3])
.to([3, 5])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select().keys().search().from(3).query(),
&[
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![
("key1", DbValue::default()).into(),
("key2", DbValue::default()).into(),
("key3", DbValue::default()).into(),
],
},
DbElement {
id: DbId(-7),
from: Some(DbId(3)),
to: Some(DbId(5)),
values: vec![],
},
DbElement {
id: DbId(5),
from: None,
to: None,
values: vec![
("key1", DbValue::default()).into(),
("key2", DbValue::default()).into(),
("key3", DbValue::default()).into(),
],
},
],
);
}