final class e[Ns, In] extends OneLong[Ns, In] with Indexed
- Alphabetic
- By Inheritance
- e
- Indexed
- OneLong
- One
- OneExpr
- ValueAttrExpr
- AttrExpr
- ValueAttr
- Attr
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new e()
Value Members
- def !=(value: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute negation value(s).
Mark molecule as input molecule awaiting attribute negation value(s).
Person.name.age.get === List(("Ben", 42), ("Liz", 37)) // Create input molecule at compile time by applying `?` marker to attribute val ageOfPersonsOtherThan = m(Person.name_.!=(?).age) // Apply `name` attribute value at runtime to get ages of all other than Ben ageOfPersonsOtherThan("Ben").get === List(37) // Liz' age
- value
Input marker
?
for negation value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def !=(values: Seq[Long]): Ns with Attr
Match attribute values different from applied Iterable of values.
Match attribute values different from applied Iterable of values.
Person.name.get === List("Ben", "Liz", "Joe") // Negate Iterable of values Person.name.!=(List("Ben", "Joe")).get === List("Liz") // same as Person.name.not(List("Ben", "Joe")).get === List("Liz")
- values
Iterable of negated attribute values
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- def !=(value: Long, moreValues: Long*): Ns with Attr
Match attribute values different from one or more applied values.
Match attribute values different from one or more applied values.
Person.name.get === List("Ben", "Liz", "Joe") // Negate one value Person.name.!=("Ben").get === List("Liz", "Joe") // Negate multiple values Person.name.!=("Ben", "Liz").get === List("Joe") // same as Person.name.not("Ben", "Liz").get === List("Joe")
- value
Negated attribute value
- moreValues
Optional additional negated attribute values
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def <(upper: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute upper value.
Mark molecule as input molecule awaiting attribute upper value.
Person.name.age.get === List(("Liz", 37), ("Ben", 42), ("Don", 71)) // Create input molecule at compile time by applying `?` marker to attribute val personsUnder = m(Person.name.age_.<(?)) // Apply upper value at runtime to get names of all under 42 personsUnder(42).get === List("Liz")
- upper
Input marker
?
for upper value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def <(upper: Long): Ns with Attr
Match attribute values less than upper value.
Match attribute values less than upper value.
Person.age.get === List(5, 12, 28) Person.age.<(12).get === List(5)
- upper
Upper value
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def <=(upper: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute upper value.
Mark molecule as input molecule awaiting attribute upper value.
Person.name.age.get === List(("Liz", 37), ("Ben", 42), ("Don", 71)) // Create input molecule at compile time by applying `?` marker to attribute val personsUnderOrExactly = m(Person.name.age_.<=(?)) // Apply upper value at runtime to get names of all under or exactly 42 personsUnderOrExactly(42).get === List("Liz", "Ben")
- upper
Input marker
?
for upper value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def <=(upper: Long): Ns with Attr
Match attribute values less than or equal to upper value.
Match attribute values less than or equal to upper value.
Person.age.get === List(5, 12, 28) Person.age.<=(12).get === List(5, 12)
- upper
Upper value
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def >(lower: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute lower value.
Mark molecule as input molecule awaiting attribute lower value.
Person.name.age.get === List(("Liz", 37), ("Ben", 42), ("Don", 71)) // Create input molecule at compile time by applying `?` marker to attribute val personsOver = m(Person.name.age_.>(?)) // Apply lower value at runtime to get names of all over 42 personsOver(42).get === List("Don")
- lower
Input marker
?
for lower value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def >(lower: Long): Ns with Attr
Match attribute values bigger than lower value
Match attribute values bigger than lower value
Person.age.get === List(5, 12, 28) Person.age.>(12).get === List(28)
- lower
Lower value
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def >=(lower: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute lower value.
Mark molecule as input molecule awaiting attribute lower value.
Person.name.age.get === List(("Liz", 37), ("Ben", 42), ("Don", 71)) // Create input molecule at compile time by applying `?` marker to attribute val personsOverOrExactly = m(Person.name.age_.>=(?)) // Apply lower value at runtime to get names of all over or exactly 42 personsOverOrExactly(42).get === List("Ben", "Don")
- lower
Input marker
?
for lower value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def >=(lower: Long): Ns with Attr
Match attribute values bigger than or equal to lower value.
Match attribute values bigger than or equal to lower value.
Person.age.get === List(5, 12, 28) Person.age.>=(12).get === List(12, 28)
- lower
Lower value
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def apply(expr3: Exp3[Long, Long, Long]): Ns with Attr
Expression AST for building OR/AND expressions.
Expression AST for building OR/AND expressions.
Person.name.age.hobbies.get === List( ("Liz", 37, Set("golf", "diving")), ("Ben", 42, Set("golf", "diving", "reading")), ("Joe", 42, Set("golf", "reading")) ) // Apply two AND expression for card-many attributes Person.name.hobbies_("golf" and "diving" and "reading").get === List("Ben")
With input molecules we can apply logic to multiple attributes at once.
Person.name.age.noOfCars.noOfKids.get === List( ("Joe", 42, 1, 2), ("Ben", 42, 1, 1), ("Liz", 37, 2, 3) ) // Apply AND-triples to OR expression: val persons = m(Person.name.age_(?).noOfCars(?).noOfKids_(?)) persons((42 and 1 and 1) or (37 and 2 and 3)).get === List("Ben", "Liz")
- expr3
OR/AND expression
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def apply(expr2: Exp2[Long, Long]): Ns with Attr
Filter attribute values with logical expression.
Filter attribute values with logical expression.
Person.name.age.hobbies.get === List( ("Joe", 42, Set("golf", "reading")), ("Ben", 42, Set("golf", "diving", "reading")), ("Liz", 37, Set("golf", "diving")) ) // Apply AND expression for card-many attributes Person.name.hobbies_("golf" and "diving").get === List("Ben", "Liz") // Given an input molecule awaiting 2 inputs, we can apply AND-pairs to OR expression: val persons = m(Person.name_(?).age(?)) persons(("Ben" and 42) or ("Liz" and 37)).get === List(42, 37)
- expr2
OR/AND expression
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def apply(expr1: Exp1[Long]): Ns with Attr
Filter attribute values with logical expression.
Filter attribute values with logical expression.
Person.name.age.get === List( ("Liz", 37), ("Ben", 42), ("Don", 71) ) // Apply OR expression // Match all entities with `name` attribute having value "Liz" or "Ben" Person.name_("Liz" or "Ben").age.get === List(37, 42)
- expr1
OR expression
- returns
Molecule
- Definition Classes
- ValueAttrExpr
- def apply(value: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute value(s) to be matched.
Mark molecule as input molecule awaiting attribute value(s) to be matched.
Person.name.age.get === List(("Ben", 42), ("Liz", 37)) // Create input molecule at compile time by applying `?` marker to attribute val ageOfPerson = m(Person.name_(?).age) // Apply `name` attribute value at runtime to get age ageOfPerson("Ben").get === List(42)
- value
Input marker
?
for equality match- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def apply(unifyer: api.core.unify): Ns with Attr
Mark tacit attribute to be unified in self-join.
Mark tacit attribute to be unified in self-join.
Attributes beforeSelf
are joined with attributes added afterSelf
by values that can unify:
Find 23-year olds liking the same beverage as 25-year olds (unifying by beverage):Person.name.age(23).Drinks.beverage._Person.Self // create self join .name.age(25).Drinks.beverage_(unify) // unify by beverage .get === List( ("Joe", 23, "Coffee", "Ben", 25), // Joe (23) and Ben(25) both like coffee ("Liz", 23, "Coffee", "Ben", 25), // Liz (23) and Ben(25) both like coffee ("Liz", 23, "Tea", "Ben", 25) // Liz (23) and Ben(25) both like tea )
unify
marker can only be applied to tacit attribute (with underscore).- unifyer
unify
marker to unify self-join by this attribute values- returns
Self-join molecule
- Definition Classes
- AttrExpr
- def apply(values: Iterable[Long], moreValues: Iterable[Long]*): Ns with Attr
Match one or more Iterables of attribute values.
Match one or more Iterables of attribute values.
Multiple Iterables are concatenated into one Iterable of values to be matched.
Applying value(s) to an attribute has different semantics depending on what operation is performed:// Querying with `get` - Ben is 42 Person.name_(Set("Ben")).age.get === List(42) val members = List("Ben", "Liz") val associates = List("Don", "Ann") // OR-semantics when multiple values are queried Person.name_(members).age.get === List(42, 37) // Multiple Iterables concatenated Person.name_(members, associates).age.get === List(42, 37, 71, 28) // Single value in Iterable can be added when saving // (although easier to apply the value directly) Person.name(List("Joe")).save // Saving multiple new card-many attribute values (all old values are retracted). // (Saving multiple new values not allowed for card-one attributes) val sports = Set("golf", "diving") Person.hobbies(sports).save // Replacing value when updating (old value is retracted). Person(benId).age(List(43)).update // Replacing multiple values for card-many attributes (all old values are retracted). // (Replacing multiple values not allowed for card-one attributes) Person(benId).hobbies(Seq("reading", "walking")).update // Multiple Iterables can be applied Person(benId).hobbies(Seq("reading", "walking"), Set("stamps")).update
- values
Iterable of attribute values to be matched
- moreValues
Optional additional Iterables of attribute values to be matched
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- def apply(value: Long, moreValues: Long*): Ns with Attr
Match one or more attribute values.
Match one or more attribute values.
Applying value(s) to an attribute has different semantics depending on what operation is performed:// Querying with `get` - Ben is 42 Person.name_("Ben").age.get === List(42) // OR-semantics when multiple values are queried Person.name_("Ben", "Liz").age.get === List(42, 37) // Saving new value (any old value is retracted) Person.name("Joe").save // Saving multiple new card-many attribute values (all old values are retracted). // (Saving multiple new values not allowed for card-one attributes) Person.hobbies("golf", "diving").save // Replacing value when updating (old value is retracted). Person(benId).age(43).update // Replacing multiple values for card-many attributes (all old values are retracted). // (Replacing multiple values not allowed for card-one attributes) Person(benId).hobbies("reading", "walking").update
- value
Attribute values to be matched
- moreValues
Optional additional attribute values to be matched
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- def apply(): Ns with Attr
Apply empty value to retract datom in an update.
Apply empty value to retract datom in an update.
val benId = Person.name("Ben").age(42).save.eid Person.name.age$ === List(("Ben", Some(42))) // Retract Ben's age Person(benId).age().update Person.name.age$ === List(("Ben", None))
For cardinality-many attributes, all values of the attribute are retracted.
- Definition Classes
- AttrExpr
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- 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
- def not(value: api.core.??): In with Attr
Mark molecule as input molecule awaiting attribute negation value(s).
Mark molecule as input molecule awaiting attribute negation value(s).
Person.name.age.get === List(("Ben", 42), ("Liz", 37)) // Create input molecule at compile time by applying `?` marker to attribute val ageOfPersonsOtherThan = m(Person.name_.not(?).age) // Apply `name` attribute value at runtime to get ages of all other than Ben ageOfPersonsOtherThan("Ben").get === List(37) // Liz' age
- value
Input marker
?
for negation value- returns
Input molecule
- Definition Classes
- ValueAttrExpr
- def not(values: Iterable[Long]): Ns with Attr
Match attribute values different from applied Iterable of values.
Match attribute values different from applied Iterable of values.
Person.name.get === List("Ben", "Liz", "Joe") // Negate Iterable of values Person.name.not(List("Ben", "Joe")).get === List("Liz") // same as Person.name.!=(List("Ben", "Joe")).get === List("Liz")
- values
Iterable of negated attribute values
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- def not(value: Long, moreValues: Long*): Ns with Attr
Match attribute values different from one or more applied values.
Match attribute values different from one or more applied values.
Person.name.get === List("Ben", "Liz", "Joe") // Negate one value Person.name.not("Ben").get === List("Liz", "Joe") // Negate multiple values Person.name.not("Ben", "Liz").get === List("Joe") // same as Person.name.!=("Ben", "Liz").get === List("Joe")
- value
Negated attribute value
- moreValues
Optional additional negated attribute values
- returns
Filtered molecule
- Definition Classes
- AttrExpr
- 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(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Documentation/API for the Molecule library - a meta DSL for the Datomic database.
Manual | scalamolecule.org | Github | Forum