trait AttrExpressions extends AnyRef
Attribute expression markers and methods.
Person.age(42) // equality Person.name.contains("John") // fulltext search Person.age.!=(42) // negation (or `not`) Person.age.<(42) // comparison (< > <= >=) Person.age().get // match non-asserted datoms (null) in query Person(benId).age().update // apply empty value to retract value(s) in updates Person.hobbies.assert("golf") // assert card-many value(s) Person.hobbies.replace("golf", "diving") // replace card-many attribute value(s) Person.hobbies.retract("golf") // retract card-many attribute value(s) Person.tags.k("en") // match values of map attributes by key Person.name(?) // initiate input molecules awaiting input at runtime Person.name(unify) // Unify attributes in self-joins
- Source
- AttrExpressions.scala
- See also
Manual: expressions, aggregates, input molecules, self-join | Tests: expressions, input1, input2, input3
- Grouped
- Alphabetic
- By Inheritance
- AttrExpressions
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
trait
? extends AnyRef
Turn molecule into input molecule awaiting input.
Turn molecule into input molecule awaiting input.
Apply input marker?
to attribute to turn molecule into an 'input molecule'.
At runtime the input molecule expects input for the attribute in place of the?
marker.// Input molecule created at compile time. val ageOfPersons = m(Person.name_(?).age) // awaiting name of type String // At runtime, "Ben" is applied as input replacing the `?` placeholder and we can get the age. ageOfPersons("Ben").get === List(42)
- Note
Data can only be retrieved from input molecules once they have been resolved with input.
Input molecule queries are cached and optimized by Datomic.
- type ?? = AttrExpressions.?
-
trait
AttrExpr[Ns, T] extends AnyRef
Expression methods common for all attributes.
-
trait
FulltextExpr[Ns, In] extends AnyRef
Expression methods of String attributes with fulltext search.
-
trait
ManyAttrExpr[Ns, Add, OldNew, Rem] extends AnyRef
Value update methods for card-many attributes.
-
trait
ManyExpr[Ns, In, T] extends ValueAttrExpr[Ns, In, T] with ManyAttrExpr[Ns, T, (T, T), T]
Expression methods of card-many attributes.
-
trait
ManyRefAttrExpr[Ns, In] extends AttrExpr[Ns, Long] with ManyAttrExpr[Ns, Long, (Long, Long), Long]
Expression methods of card-many ref attributes.
-
trait
MapAttrExpr[Ns, In, T] extends ValueAttrExpr[Ns, In, T] with ManyAttrExpr[Ns, (String, T), (String, T), String]
Expression methods of map attributes.
-
trait
OneExpr[Ns, In, T] extends ValueAttrExpr[Ns, In, T]
Expression methods of card-one attributes.
-
trait
OneRefAttrExpr[Ns, In] extends AttrExpr[Ns, Long]
Expression methods of card-one ref attributes.
-
trait
OptionalExpr[Ns, T] extends AnyRef
Expression methods of optional attributes.
-
trait
ValueAttrExpr[Ns, In, T] extends AttrExpr[Ns, T]
Expression methods of value attributes.
-
trait
unify extends AnyRef
Unify attribute value in self-join.
Unify attribute value in self-join.
Applyunify
marker to attribute to unify its value with previous values of the same attribute in the molecule in a self-join.m(Person.age.name.Beverages * Beverage.name.rating) insert List( (23, "Joe", List(("Coffee", 3), ("Cola", 2), ("Pepsi", 3))), (25, "Ben", List(("Coffee", 2), ("Tea", 3))), (23, "Liz", List(("Coffee", 1), ("Tea", 3), ("Pepsi", 1)))) // What beverages do pairs of 23- AND 25-year-olds like in common? // Drink name is unified - Joe and Ben both drink coffee, etc.. Person.age_(23).name.Beverages.name._Ns.Self .age_(25).name.Beverages.name_(unify).get.sorted === List( ("Joe", "Coffee", "Ben"), ("Liz", "Coffee", "Ben"), ("Liz", "Tea", "Ben") )
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
Inherited from AnyRef
Inherited from Any
Attribute markers
Markers applied to attributes that change the semantics of the attribute/molecule.
Documentation/API for the Molecule library - a meta DSL for the Datomic database.
Manual | scalamolecule.org | Github | Forum