use crate::traversal::context::ExecutionContext;
use crate::traversal::filter::{
CoinStep, DedupByKeyStep, DedupByLabelStep, DedupByTraversalStep, DedupStep, FilterStep,
HasIdStep, HasKeyStep, HasLabelStep, HasNotStep, HasPropValueStep, HasStep, HasValueStep,
HasWhereStep, LimitStep, RangeStep, SampleStep, SkipStep, TailStep, WherePStep,
};
use crate::traversal::navigation::{
BothEStep, BothStep, BothVStep, InEStep, InStep, InVStep, OtherVStep, OutEStep, OutStep,
OutVStep,
};
use crate::traversal::pipeline::Traversal;
use crate::traversal::predicate::Predicate;
use crate::traversal::step::IdentityStep;
use crate::traversal::transform::{
AsStep, ConstantStep, ElementMapStep, FlatMapStep, IdStep, IndexStep, KeyStep, LabelStep,
LoopsStep, MapStep, OrderBuilder, PathStep, ProjectBuilder, PropertiesStep, PropertyMapStep,
SelectStep, UnfoldStep, ValueMapStep, ValueStep, ValuesStep,
};
use crate::value::Value;
#[inline]
pub fn identity() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(IdentityStep::new())
}
#[inline]
pub fn out() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(OutStep::new())
}
pub fn out_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(OutStep::with_labels(labels))
}
#[inline]
pub fn in_() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(InStep::new())
}
pub fn in_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(InStep::with_labels(labels))
}
#[inline]
pub fn both() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(BothStep::new())
}
pub fn both_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(BothStep::with_labels(labels))
}
#[inline]
pub fn out_e() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(OutEStep::new())
}
pub fn out_e_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(OutEStep::with_labels(labels))
}
#[inline]
pub fn in_e() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(InEStep::new())
}
pub fn in_e_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(InEStep::with_labels(labels))
}
#[inline]
pub fn both_e() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(BothEStep::new())
}
pub fn both_e_labels(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(BothEStep::with_labels(labels))
}
#[inline]
pub fn out_v() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(OutVStep::new())
}
#[inline]
pub fn in_v() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(InVStep::new())
}
#[inline]
pub fn both_v() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(BothVStep::new())
}
#[inline]
pub fn other_v() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(OtherVStep::new())
}
pub fn has_label(label: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasLabelStep::single(label))
}
pub fn has_label_any(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(HasLabelStep::new(labels))
}
pub fn has(key: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasStep::new(key))
}
pub fn has_not(key: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasNotStep::new(key))
}
pub fn has_value(key: impl Into<String>, value: impl Into<Value>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasValueStep::new(key, value))
}
pub fn has_id(id: impl Into<Value>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasIdStep::from_value(id))
}
pub fn has_ids<I, T>(ids: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = T>,
T: Into<Value>,
{
Traversal::<Value, Value>::new().add_step(HasIdStep::from_values(
ids.into_iter().map(Into::into).collect(),
))
}
pub fn has_where(
key: impl Into<String>,
predicate: impl Predicate + 'static,
) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasWhereStep::new(key, predicate))
}
pub fn is_(predicate: impl Predicate + 'static) -> Traversal<Value, Value> {
use crate::traversal::filter::IsStep;
Traversal::<Value, Value>::new().add_step(IsStep::new(predicate))
}
pub fn is_eq(value: impl Into<Value>) -> Traversal<Value, Value> {
use crate::traversal::filter::IsStep;
Traversal::<Value, Value>::new().add_step(IsStep::eq(value))
}
pub fn filter<F>(predicate: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> bool + Clone + Send + Sync + 'static,
{
Traversal::<Value, Value>::new().add_step(FilterStep::new(predicate))
}
#[inline]
pub fn dedup() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(DedupStep::new())
}
#[inline]
pub fn dedup_by_key(key: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(DedupByKeyStep::new(key))
}
#[inline]
pub fn dedup_by_label() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(DedupByLabelStep::new())
}
#[inline]
pub fn dedup_by(sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(DedupByTraversalStep::new(sub))
}
#[inline]
pub fn limit(count: usize) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(LimitStep::new(count))
}
#[inline]
pub fn skip(count: usize) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(SkipStep::new(count))
}
#[inline]
pub fn range(start: usize, end: usize) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(RangeStep::new(start, end))
}
#[inline]
pub fn simple_path() -> Traversal<Value, Value> {
use crate::traversal::filter::SimplePathStep;
Traversal::<Value, Value>::new().add_step(SimplePathStep::new())
}
#[inline]
pub fn cyclic_path() -> Traversal<Value, Value> {
use crate::traversal::filter::CyclicPathStep;
Traversal::<Value, Value>::new().add_step(CyclicPathStep::new())
}
#[inline]
pub fn tail() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(TailStep::last())
}
#[inline]
pub fn tail_n(count: usize) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(TailStep::new(count))
}
#[inline]
pub fn coin(probability: f64) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(CoinStep::new(probability))
}
#[inline]
pub fn sample(count: usize) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(SampleStep::new(count))
}
#[inline]
pub fn has_key(key: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasKeyStep::new(key))
}
#[inline]
pub fn has_key_any<I, S>(keys: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = S>,
S: Into<String>,
{
Traversal::<Value, Value>::new().add_step(HasKeyStep::any(keys))
}
#[inline]
pub fn has_prop_value(value: impl Into<Value>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(HasPropValueStep::new(value))
}
#[inline]
pub fn has_prop_value_any<I, V>(values: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = V>,
V: Into<Value>,
{
Traversal::<Value, Value>::new().add_step(HasPropValueStep::any(values))
}
#[inline]
pub fn where_p(
predicate: impl crate::traversal::predicate::Predicate + 'static,
) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(WherePStep::new(predicate))
}
pub fn values(key: impl Into<String>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ValuesStep::new(key))
}
pub fn values_multi<I, S>(keys: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = S>,
S: Into<String>,
{
Traversal::<Value, Value>::new().add_step(ValuesStep::from_keys(keys))
}
pub fn properties() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(PropertiesStep::new())
}
pub fn properties_keys(keys: &[&str]) -> Traversal<Value, Value> {
let keys: Vec<String> = keys.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(PropertiesStep::with_keys(keys))
}
#[inline]
pub fn value_map() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ValueMapStep::new())
}
pub fn value_map_keys(keys: &[&str]) -> Traversal<Value, Value> {
let keys: Vec<String> = keys.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(ValueMapStep::with_keys(keys))
}
#[inline]
pub fn value_map_with_tokens() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ValueMapStep::new().with_tokens())
}
#[inline]
pub fn element_map() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ElementMapStep::new())
}
pub fn element_map_keys(keys: &[&str]) -> Traversal<Value, Value> {
let keys: Vec<String> = keys.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(ElementMapStep::with_keys(keys))
}
#[inline]
pub fn property_map() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(PropertyMapStep::new())
}
pub fn property_map_keys(keys: &[&str]) -> Traversal<Value, Value> {
let keys: Vec<String> = keys.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(PropertyMapStep::with_keys(keys))
}
#[inline]
pub fn unfold() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(UnfoldStep::new())
}
#[inline]
pub fn mean() -> Traversal<Value, Value> {
use crate::traversal::transform::MeanStep;
Traversal::<Value, Value>::new().add_step(MeanStep::new())
}
#[inline]
pub fn fold() -> Traversal<Value, Value> {
use crate::traversal::transform::FoldStep;
Traversal::<Value, Value>::new().add_step(FoldStep::new())
}
#[inline]
pub fn sum() -> Traversal<Value, Value> {
use crate::traversal::transform::SumStep;
Traversal::<Value, Value>::new().add_step(SumStep::new())
}
#[inline]
pub fn count() -> Traversal<Value, Value> {
use crate::traversal::aggregate::CountStep;
Traversal::<Value, Value>::new().add_step(CountStep::new())
}
#[inline]
pub fn min() -> Traversal<Value, Value> {
use crate::traversal::aggregate::MinStep;
Traversal::<Value, Value>::new().add_step(MinStep::new())
}
#[inline]
pub fn max() -> Traversal<Value, Value> {
use crate::traversal::aggregate::MaxStep;
Traversal::<Value, Value>::new().add_step(MaxStep::new())
}
#[inline]
pub fn count_local() -> Traversal<Value, Value> {
use crate::traversal::transform::CountLocalStep;
Traversal::<Value, Value>::new().add_step(CountLocalStep::new())
}
#[inline]
pub fn sum_local() -> Traversal<Value, Value> {
use crate::traversal::transform::SumLocalStep;
Traversal::<Value, Value>::new().add_step(SumLocalStep::new())
}
#[inline]
pub fn select_keys() -> Traversal<Value, Value> {
use crate::traversal::transform::SelectKeysStep;
Traversal::<Value, Value>::new().add_step(SelectKeysStep::new())
}
#[inline]
pub fn select_values() -> Traversal<Value, Value> {
use crate::traversal::transform::SelectValuesStep;
Traversal::<Value, Value>::new().add_step(SelectValuesStep::new())
}
pub fn order() -> OrderBuilder<Value> {
OrderBuilder::new(vec![])
}
#[cfg(feature = "gql")]
pub fn math(expression: &str) -> crate::traversal::transform::MathBuilder<Value> {
crate::traversal::transform::MathBuilder::new(vec![], expression)
}
pub fn project(keys: &[&str]) -> ProjectBuilder<Value> {
let key_strings: Vec<String> = keys.iter().map(|k| k.to_string()).collect();
ProjectBuilder::new(vec![], key_strings)
}
pub fn group() -> crate::traversal::aggregate::GroupBuilder<Value> {
use crate::traversal::aggregate::GroupBuilder;
GroupBuilder::new(vec![])
}
pub fn group_count() -> crate::traversal::aggregate::GroupCountBuilder<Value> {
use crate::traversal::aggregate::GroupCountBuilder;
GroupCountBuilder::new(vec![])
}
#[inline]
pub fn id() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(IdStep::new())
}
#[inline]
pub fn label() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(LabelStep::new())
}
#[inline]
pub fn key() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(KeyStep::new())
}
#[inline]
pub fn value() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ValueStep::new())
}
#[inline]
pub fn loops() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(LoopsStep::new())
}
#[inline]
pub fn index() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(IndexStep::new())
}
pub fn constant(value: impl Into<Value>) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(ConstantStep::new(value))
}
#[inline]
pub fn path() -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(PathStep::new())
}
pub fn map<F>(f: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> Value + Clone + Send + Sync + 'static,
{
Traversal::<Value, Value>::new().add_step(MapStep::new(f))
}
pub fn flat_map<F>(f: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> Vec<Value> + Clone + Send + Sync + 'static,
{
Traversal::<Value, Value>::new().add_step(FlatMapStep::new(f))
}
pub fn as_(label: &str) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(AsStep::new(label))
}
pub fn select(labels: &[&str]) -> Traversal<Value, Value> {
let labels: Vec<String> = labels.iter().map(|s| s.to_string()).collect();
Traversal::<Value, Value>::new().add_step(SelectStep::new(labels))
}
pub fn select_one(label: &str) -> Traversal<Value, Value> {
Traversal::<Value, Value>::new().add_step(SelectStep::single(label))
}
pub fn where_(sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::branch::WhereStep;
Traversal::<Value, Value>::new().add_step(WhereStep::new(sub))
}
pub fn not(sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::branch::NotStep;
Traversal::<Value, Value>::new().add_step(NotStep::new(sub))
}
pub fn and_(subs: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
use crate::traversal::branch::AndStep;
Traversal::<Value, Value>::new().add_step(AndStep::new(subs))
}
pub fn or_(subs: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
use crate::traversal::branch::OrStep;
Traversal::<Value, Value>::new().add_step(OrStep::new(subs))
}
pub fn union(branches: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
use crate::traversal::branch::UnionStep;
Traversal::<Value, Value>::new().add_step(UnionStep::new(branches))
}
pub fn coalesce(branches: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
use crate::traversal::branch::CoalesceStep;
Traversal::<Value, Value>::new().add_step(CoalesceStep::new(branches))
}
pub fn choose(
condition: Traversal<Value, Value>,
if_true: Traversal<Value, Value>,
if_false: Traversal<Value, Value>,
) -> Traversal<Value, Value> {
use crate::traversal::branch::ChooseStep;
Traversal::<Value, Value>::new().add_step(ChooseStep::new(condition, if_true, if_false))
}
pub fn optional(sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::branch::OptionalStep;
Traversal::<Value, Value>::new().add_step(OptionalStep::new(sub))
}
pub fn local(sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::branch::LocalStep;
Traversal::<Value, Value>::new().add_step(LocalStep::new(sub))
}
pub fn add_v(label: impl Into<String>) -> Traversal<Value, Value> {
use crate::traversal::mutation::AddVStep;
Traversal::<Value, Value>::new().add_step(AddVStep::new(label))
}
pub fn add_e(label: impl Into<String>) -> crate::traversal::mutation::AddEStep {
crate::traversal::mutation::AddEStep::new(label)
}
pub fn property(key: impl Into<String>, value: impl Into<Value>) -> Traversal<Value, Value> {
use crate::traversal::mutation::PropertyStep;
Traversal::<Value, Value>::new().add_step(PropertyStep::new(key, value))
}
pub fn drop() -> Traversal<Value, Value> {
use crate::traversal::mutation::DropStep;
Traversal::<Value, Value>::new().add_step(DropStep::new())
}
pub fn branch(branch_traversal: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::branch::BranchStep;
Traversal::<Value, Value>::new().add_step(BranchStep::new(branch_traversal))
}
pub fn store(key: impl Into<String>) -> Traversal<Value, Value> {
use crate::traversal::sideeffect::StoreStep;
Traversal::<Value, Value>::new().add_step(StoreStep::new(key))
}
pub fn aggregate(key: impl Into<String>) -> Traversal<Value, Value> {
use crate::traversal::sideeffect::AggregateStep;
Traversal::<Value, Value>::new().add_step(AggregateStep::new(key))
}
pub fn cap(key: impl Into<String>) -> Traversal<Value, Value> {
use crate::traversal::sideeffect::CapStep;
Traversal::<Value, Value>::new().add_step(CapStep::new(key))
}
pub fn side_effect(traversal: Traversal<Value, Value>) -> Traversal<Value, Value> {
use crate::traversal::sideeffect::SideEffectStep;
Traversal::<Value, Value>::new().add_step(SideEffectStep::new(traversal))
}
pub fn profile() -> Traversal<Value, Value> {
use crate::traversal::sideeffect::ProfileStep;
Traversal::<Value, Value>::new().add_step(ProfileStep::new())
}
pub fn profile_as(key: impl Into<String>) -> Traversal<Value, Value> {
use crate::traversal::sideeffect::ProfileStep;
Traversal::<Value, Value>::new().add_step(ProfileStep::with_key(key))
}
#[derive(Debug, Clone, Copy, Default)]
pub struct AnonymousTraversal;
#[allow(non_upper_case_globals)]
pub static __: AnonymousTraversal = AnonymousTraversal;
impl AnonymousTraversal {
#[inline]
pub fn identity(&self) -> Traversal<Value, Value> {
identity()
}
#[inline]
pub fn out(&self) -> Traversal<Value, Value> {
out()
}
#[inline]
pub fn out_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
out_labels(labels)
}
#[inline]
pub fn in_(&self) -> Traversal<Value, Value> {
in_()
}
#[inline]
pub fn in_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
in_labels(labels)
}
#[inline]
pub fn both(&self) -> Traversal<Value, Value> {
both()
}
#[inline]
pub fn both_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
both_labels(labels)
}
#[inline]
pub fn out_e(&self) -> Traversal<Value, Value> {
out_e()
}
#[inline]
pub fn out_e_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
out_e_labels(labels)
}
#[inline]
pub fn in_e(&self) -> Traversal<Value, Value> {
in_e()
}
#[inline]
pub fn in_e_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
in_e_labels(labels)
}
#[inline]
pub fn both_e(&self) -> Traversal<Value, Value> {
both_e()
}
#[inline]
pub fn both_e_labels(&self, labels: &[&str]) -> Traversal<Value, Value> {
both_e_labels(labels)
}
#[inline]
pub fn out_v(&self) -> Traversal<Value, Value> {
out_v()
}
#[inline]
pub fn in_v(&self) -> Traversal<Value, Value> {
in_v()
}
#[inline]
pub fn both_v(&self) -> Traversal<Value, Value> {
both_v()
}
#[inline]
pub fn other_v(&self) -> Traversal<Value, Value> {
other_v()
}
#[inline]
pub fn has_label(&self, label: impl Into<String>) -> Traversal<Value, Value> {
has_label(label)
}
#[inline]
pub fn has_label_any(&self, labels: &[&str]) -> Traversal<Value, Value> {
has_label_any(labels)
}
#[inline]
pub fn has(&self, key: impl Into<String>) -> Traversal<Value, Value> {
has(key)
}
#[inline]
pub fn has_not(&self, key: impl Into<String>) -> Traversal<Value, Value> {
has_not(key)
}
#[inline]
pub fn has_value(
&self,
key: impl Into<String>,
value: impl Into<Value>,
) -> Traversal<Value, Value> {
has_value(key, value)
}
#[inline]
pub fn has_id(&self, id: impl Into<Value>) -> Traversal<Value, Value> {
has_id(id)
}
#[inline]
pub fn has_ids<I, T>(&self, ids: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = T>,
T: Into<Value>,
{
has_ids(ids)
}
#[inline]
pub fn has_where(
&self,
key: impl Into<String>,
predicate: impl Predicate + 'static,
) -> Traversal<Value, Value> {
has_where(key, predicate)
}
#[inline]
pub fn is_(&self, predicate: impl Predicate + 'static) -> Traversal<Value, Value> {
is_(predicate)
}
#[inline]
pub fn is_eq(&self, value: impl Into<Value>) -> Traversal<Value, Value> {
is_eq(value)
}
#[inline]
pub fn filter<F>(&self, predicate: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> bool + Clone + Send + Sync + 'static,
{
filter(predicate)
}
#[inline]
pub fn dedup(&self) -> Traversal<Value, Value> {
dedup()
}
#[inline]
pub fn dedup_by_key(&self, key: impl Into<String>) -> Traversal<Value, Value> {
dedup_by_key(key)
}
#[inline]
pub fn dedup_by_label(&self) -> Traversal<Value, Value> {
dedup_by_label()
}
#[inline]
pub fn dedup_by(&self, sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
dedup_by(sub)
}
#[inline]
pub fn limit(&self, count: usize) -> Traversal<Value, Value> {
limit(count)
}
#[inline]
pub fn skip(&self, count: usize) -> Traversal<Value, Value> {
skip(count)
}
#[inline]
pub fn range(&self, start: usize, end: usize) -> Traversal<Value, Value> {
range(start, end)
}
#[inline]
pub fn simple_path(&self) -> Traversal<Value, Value> {
simple_path()
}
#[inline]
pub fn cyclic_path(&self) -> Traversal<Value, Value> {
cyclic_path()
}
#[inline]
pub fn tail(&self) -> Traversal<Value, Value> {
tail()
}
#[inline]
pub fn tail_n(&self, count: usize) -> Traversal<Value, Value> {
tail_n(count)
}
#[inline]
pub fn coin(&self, probability: f64) -> Traversal<Value, Value> {
coin(probability)
}
#[inline]
pub fn sample(&self, count: usize) -> Traversal<Value, Value> {
sample(count)
}
#[inline]
pub fn has_key(&self, key: impl Into<String>) -> Traversal<Value, Value> {
has_key(key)
}
#[inline]
pub fn has_key_any<I, S>(&self, keys: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = S>,
S: Into<String>,
{
has_key_any(keys)
}
#[inline]
pub fn has_prop_value(&self, value: impl Into<Value>) -> Traversal<Value, Value> {
has_prop_value(value)
}
#[inline]
pub fn has_prop_value_any<I, V>(&self, values: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = V>,
V: Into<Value>,
{
has_prop_value_any(values)
}
#[inline]
pub fn where_p(
&self,
predicate: impl crate::traversal::predicate::Predicate + 'static,
) -> Traversal<Value, Value> {
where_p(predicate)
}
#[inline]
pub fn values(&self, key: impl Into<String>) -> Traversal<Value, Value> {
values(key)
}
#[inline]
pub fn values_multi<I, S>(&self, keys: I) -> Traversal<Value, Value>
where
I: IntoIterator<Item = S>,
S: Into<String>,
{
values_multi(keys)
}
#[inline]
pub fn properties(&self) -> Traversal<Value, Value> {
properties()
}
#[inline]
pub fn properties_keys(&self, keys: &[&str]) -> Traversal<Value, Value> {
properties_keys(keys)
}
#[inline]
pub fn value_map(&self) -> Traversal<Value, Value> {
value_map()
}
#[inline]
pub fn value_map_keys(&self, keys: &[&str]) -> Traversal<Value, Value> {
value_map_keys(keys)
}
#[inline]
pub fn value_map_with_tokens(&self) -> Traversal<Value, Value> {
value_map_with_tokens()
}
#[inline]
pub fn element_map(&self) -> Traversal<Value, Value> {
element_map()
}
#[inline]
pub fn element_map_keys(&self, keys: &[&str]) -> Traversal<Value, Value> {
element_map_keys(keys)
}
#[inline]
pub fn property_map(&self) -> Traversal<Value, Value> {
property_map()
}
#[inline]
pub fn property_map_keys(&self, keys: &[&str]) -> Traversal<Value, Value> {
property_map_keys(keys)
}
#[inline]
pub fn unfold(&self) -> Traversal<Value, Value> {
unfold()
}
#[inline]
pub fn mean(&self) -> Traversal<Value, Value> {
mean()
}
#[inline]
pub fn fold(&self) -> Traversal<Value, Value> {
fold()
}
#[inline]
pub fn sum(&self) -> Traversal<Value, Value> {
sum()
}
#[inline]
pub fn count(&self) -> Traversal<Value, Value> {
count()
}
#[inline]
pub fn min(&self) -> Traversal<Value, Value> {
min()
}
#[inline]
pub fn max(&self) -> Traversal<Value, Value> {
max()
}
#[inline]
pub fn count_local(&self) -> Traversal<Value, Value> {
count_local()
}
#[inline]
pub fn sum_local(&self) -> Traversal<Value, Value> {
sum_local()
}
#[inline]
pub fn select_keys(&self) -> Traversal<Value, Value> {
select_keys()
}
#[inline]
pub fn select_values(&self) -> Traversal<Value, Value> {
select_values()
}
#[inline]
pub fn order(&self) -> OrderBuilder<Value> {
order()
}
#[cfg(feature = "gql")]
#[inline]
pub fn math(&self, expression: &str) -> crate::traversal::transform::MathBuilder<Value> {
math(expression)
}
#[inline]
pub fn project(&self, keys: &[&str]) -> ProjectBuilder<Value> {
project(keys)
}
#[inline]
pub fn group(&self) -> crate::traversal::aggregate::GroupBuilder<Value> {
group()
}
#[inline]
pub fn group_count(&self) -> crate::traversal::aggregate::GroupCountBuilder<Value> {
group_count()
}
#[inline]
pub fn id(&self) -> Traversal<Value, Value> {
id()
}
#[inline]
pub fn label(&self) -> Traversal<Value, Value> {
label()
}
#[inline]
pub fn key(&self) -> Traversal<Value, Value> {
key()
}
#[inline]
pub fn value(&self) -> Traversal<Value, Value> {
value()
}
#[inline]
pub fn loops(&self) -> Traversal<Value, Value> {
loops()
}
#[inline]
pub fn index(&self) -> Traversal<Value, Value> {
index()
}
#[inline]
pub fn constant(&self, value: impl Into<Value>) -> Traversal<Value, Value> {
constant(value)
}
#[inline]
pub fn path(&self) -> Traversal<Value, Value> {
path()
}
#[inline]
pub fn map<F>(&self, f: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> Value + Clone + Send + Sync + 'static,
{
map(f)
}
#[inline]
pub fn flat_map<F>(&self, f: F) -> Traversal<Value, Value>
where
F: Fn(&ExecutionContext, &Value) -> Vec<Value> + Clone + Send + Sync + 'static,
{
flat_map(f)
}
#[inline]
pub fn as_(&self, label: &str) -> Traversal<Value, Value> {
as_(label)
}
#[inline]
pub fn select(&self, labels: &[&str]) -> Traversal<Value, Value> {
select(labels)
}
#[inline]
pub fn select_one(&self, label: &str) -> Traversal<Value, Value> {
select_one(label)
}
#[inline]
pub fn where_(&self, sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
where_(sub)
}
#[inline]
pub fn not(&self, sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
not(sub)
}
#[inline]
pub fn and_(&self, subs: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
and_(subs)
}
#[inline]
pub fn or_(&self, subs: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
or_(subs)
}
#[inline]
pub fn union(&self, branches: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
union(branches)
}
#[inline]
pub fn coalesce(&self, branches: Vec<Traversal<Value, Value>>) -> Traversal<Value, Value> {
coalesce(branches)
}
#[inline]
pub fn choose(
&self,
condition: Traversal<Value, Value>,
if_true: Traversal<Value, Value>,
if_false: Traversal<Value, Value>,
) -> Traversal<Value, Value> {
choose(condition, if_true, if_false)
}
#[inline]
pub fn optional(&self, sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
optional(sub)
}
#[inline]
pub fn local(&self, sub: Traversal<Value, Value>) -> Traversal<Value, Value> {
local(sub)
}
#[inline]
pub fn add_v(&self, label: impl Into<String>) -> Traversal<Value, Value> {
add_v(label)
}
#[inline]
pub fn add_e(&self, label: impl Into<String>) -> crate::traversal::mutation::AddEStep {
add_e(label)
}
#[inline]
pub fn property(
&self,
key: impl Into<String>,
value: impl Into<Value>,
) -> Traversal<Value, Value> {
property(key, value)
}
#[inline]
pub fn drop(&self) -> Traversal<Value, Value> {
drop()
}
#[inline]
pub fn branch(&self, branch_traversal: Traversal<Value, Value>) -> Traversal<Value, Value> {
branch(branch_traversal)
}
#[inline]
pub fn store(&self, key: impl Into<String>) -> Traversal<Value, Value> {
store(key)
}
#[inline]
pub fn aggregate(&self, key: impl Into<String>) -> Traversal<Value, Value> {
aggregate(key)
}
#[inline]
pub fn cap(&self, key: impl Into<String>) -> Traversal<Value, Value> {
cap(key)
}
#[inline]
pub fn side_effect(&self, traversal: Traversal<Value, Value>) -> Traversal<Value, Value> {
side_effect(traversal)
}
#[inline]
pub fn profile(&self) -> Traversal<Value, Value> {
profile()
}
#[inline]
pub fn profile_as(&self, key: impl Into<String>) -> Traversal<Value, Value> {
profile_as(key)
}
}