trait AttrExpr[Ns, T] extends AnyRef
Expression methods common for all attributes.
- Source
- AttrExpressions.scala
- Alphabetic
- By Inheritance
- AttrExpr
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- def !=(values: Seq[T]): 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
- def !=(value: T, moreValues: T*): 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
- 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
- def apply(unifyer: 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
- def apply(values: Seq[T], moreValues: Seq[T]*): 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
- def apply(value: T, moreValues: T*): 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
- 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.
- 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(values: Seq[T]): 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
- def not(value: T, moreValues: T*): 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
- 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