mod test_db; use agdb::DbKeyOrder; use agdb::QueryBuilder; use test_db::TestDb; #[test] fn search_elements() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_ids(QueryBuilder::search().elements().query(), &[1, 2, 3]); } #[test] fn search_elements_edges() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids(QueryBuilder::search().elements().query(), &[1, 2, 3, -4]); } #[test] fn search_elements_removed_node() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_mut(QueryBuilder::remove().ids(2).query(), -1); db.exec_ids(QueryBuilder::search().elements().query(), &[1, 3, -4]); } #[test] fn search_elements_removed_node_inserted_edge() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_mut(QueryBuilder::remove().ids(2).query(), -1); db.exec_mut(QueryBuilder::insert().edges().from(3).to(1).query(), 1); db.exec_ids(QueryBuilder::search().elements().query(), &[1, -2, 3, -4]); } #[test] fn search_elements_limit() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids(QueryBuilder::search().elements().limit(2).query(), &[1, 2]); } #[test] fn search_elements_offset() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids( QueryBuilder::search().elements().offset(2).query(), &[3, -4], ); } #[test] fn search_elements_offset_limit() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids( QueryBuilder::search().elements().offset(1).limit(2).query(), &[2, 3], ); } #[test] fn search_elements_order_by() { let mut db = TestDb::new(); db.exec_mut( QueryBuilder::insert() .nodes() .values([ [("age", 20).into()], [("age", 15).into()], [("age", 30).into()], ]) .query(), 3, ); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids( QueryBuilder::search() .elements() .order_by([DbKeyOrder::Asc("age".into())]) .query(), &[2, 1, 3, -4], ); } #[test] fn search_elements_condition() { let mut db = TestDb::new(); db.exec_mut(QueryBuilder::insert().nodes().count(3).query(), 3); db.exec_mut(QueryBuilder::insert().edges().from(1).to(3).query(), 1); db.exec_ids( QueryBuilder::search() .elements() .where_() .not_beyond() .ids(2) .and() .edge() .query(), &[-4], ); }