1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::storage::DatastoreRef;
use solomon_gremlin::process::traversal::GraphTraversalSource;

use super::GraphTerminator;

type TraversalSource<'a> = GraphTraversalSource<GraphTerminator<'a>>;

pub struct Database<'a> {
	traversal: TraversalSource<'a>,
}

impl<'a> Database<'a> {
	pub fn new(ds_ref: DatastoreRef<'a>) -> Self {
		let terminator = GraphTerminator::new(ds_ref);
		let traversal = GraphTraversalSource::new(terminator);

		Database {
			traversal,
		}
	}

	pub fn traverse(&self) -> TraversalSource {
		self.traversal.clone()
	}
}

crate::full_database_test_impl!(redb_test, "redb");
crate::full_database_test_impl!(rocksdb_test, "rocksdb");