Skip to content

Commit 2550191

Browse files
committed
add some steps to dsl
1 parent d97479f commit 2550191

File tree

1 file changed

+28
-0
lines changed
  • gremlin-scala/src/main/scala/gremlin/scala/dsl

1 file changed

+28
-0
lines changed

gremlin-scala/src/main/scala/gremlin/scala/dsl/Steps.scala

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ class Steps[EndDomain, EndGraph, Labels <: HList](val raw: GremlinScala[EndGraph
4141

4242
def head(): EndDomain = converter.toDomain(raw.head)
4343
def headOption(): Option[EndDomain] = raw.headOption.map(converter.toDomain)
44+
def isDefined: Boolean = headOption().isDefined
45+
4446
override def clone() = new Steps[EndDomain, EndGraph, Labels](raw.clone())
4547

4648
def dedup(): Steps[EndDomain, EndGraph, Labels] =
@@ -230,5 +232,31 @@ class Steps[EndDomain, EndGraph, Labels <: HList](val raw: GremlinScala[EndGraph
230232
}
231233
)
232234

235+
/**
236+
* The or step is a filter with multiple or related filter traversals.
237+
*/
238+
def or(orTraversals: (Steps[EndDomain, EndGraph, HNil] => Steps[_, _, _])*)
239+
: Steps[EndDomain, EndGraph, Labels] = {
240+
val rawOrTraversals = orTraversals.map {
241+
orTraversal => (rawTraversal: GremlinScala[EndGraph]) =>
242+
orTraversal(
243+
new Steps[EndDomain, EndGraph, HNil](
244+
rawTraversal.asInstanceOf[GremlinScala.Aux[EndGraph, HNil]])
245+
).raw
246+
}
247+
248+
new Steps[EndDomain, EndGraph, Labels](
249+
raw.or(rawOrTraversals: _*)
250+
)
251+
}
252+
253+
/**
254+
* Step that orders nodes according to f.
255+
* */
256+
def orderBy[A](fun: EndDomain => A): Steps[EndDomain, EndGraph, Labels] =
257+
new Steps[EndDomain, EndGraph, Labels](raw.order(By { v: EndGraph =>
258+
fun(converter.toDomain(v))
259+
}))
260+
233261
override def toString = s"${getClass.getSimpleName}($raw)"
234262
}

0 commit comments

Comments
 (0)