Packages

  • package root

    Documentation/API for the Molecule library - a meta DSL for the Datomic database.

    Manual | scalamolecule.org | Github | Forum

    Definition Classes
    root
  • package molecule

    Molecule library - a Scala meta-DSL for the Datomic database.

    Molecule library - a Scala meta-DSL for the Datomic database.

    See api package for various api imports to start using Molecule.

    Sub-packages

    api Molecule API.
    ast Internal Molecule ASTs.
    boilerplate Internal interfaces for auto-generated DSL boilerplate code.
    composition    Builder methods to compose molecules.
    exceptions Exceptions thrown by Molecule.
    expression Attribute expressions and operations.
    facade Molecule facades to Datomic.
    factory Implicit macro methods `m` to instantiate molecules from custom DSL molecule constructs.
    input Input molecules awaiting input.
    macros Internal macros generating molecule code from custom DSL molecule constructs.
    generic Interfaces to generic information about datoms and Datomic database.
    ops Internal operational helpers for transforming DSL to molecule.
    schema Schema definition DSL.
    transform Internal transformers from DSL to Model/Query/Transaction.
    util Internal Java database functions for Datomic.

    Definition Classes
    root
  • package facade
    Definition Classes
    molecule
  • package exception
    Definition Classes
    facade
  • Conn
  • Datomic
  • TxReport

class Conn extends Helpers with BridgeDatomicFuture

Facade to Datomic Connection.

Source
Conn.scala
See also

Manual | Tests: testDbAsOf, testDbSince, testDbWith,

Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Conn
  2. BridgeDatomicFuture
  3. Helpers
  4. DateHandling
  5. RegexMatching
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Conn(datomicConn: Connection)

Type Members

  1. implicit class Regex extends AnyRef
    Definition Classes
    RegexMatching

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def cast(value: Any): String
    Attributes
    protected
    Definition Classes
    Helpers
  6. def clean(attr: String): String
    Definition Classes
    Helpers
  7. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  8. def date2datomicStr(date: Date, zoneOffset: ZoneOffset = localZoneOffset): String
    Definition Classes
    DateHandling
  9. def date2str(date: Date, zoneOffset: ZoneOffset = localZoneOffset): String
    Definition Classes
    DateHandling
  10. val datomicConn: Connection
  11. def daylight(ms: Long): Int
    Definition Classes
    DateHandling
  12. def db: Database

    Get current test/live db.

    Get current test/live db. Test db has preference.

  13. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  15. def escStr(s: String): String
    Definition Classes
    Helpers
  16. def expandDateStr(dateStr: String): String
    Definition Classes
    DateHandling
  17. final def f(a: Any): Any
    Attributes
    protected
    Definition Classes
    Helpers
  18. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  19. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  20. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  21. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  22. def liveDbUsed: Boolean

    Flag to indicate if live database is used

  23. lazy val localOffset: String
    Definition Classes
    DateHandling
  24. lazy val localZoneOffset: ZoneOffset
    Definition Classes
    DateHandling
  25. val log: Logger
  26. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  27. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  28. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  29. final def o(opt: Option[Any]): String
    Attributes
    protected
    Definition Classes
    Helpers
  30. final def os(opt: Option[Set[_]]): String
    Attributes
    protected
    Definition Classes
    Helpers
  31. def q(db: Database, query: String, inputs: Seq[Any]): List[List[AnyRef]]

    Query Datomic directly with db value and optional Scala inputs.

    Query Datomic directly with db value and optional Scala inputs.

    // Sample data
    Ns.str.int.get === List(
      ("Liz", 37),
      ("Ben", 42),
    )
    
    // Start out easily with a Datomic query from debug output
    Ns.str.int.debugGet // shows datomic query...
    
    // Paste Datomic query into `q` call and use some db value
    conn.q(conn.db,
           """[:find  ?b ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin) === List(
      List("Liz", 37),
      List("Ben", 42)
    )
    
    // Modify Datomic query to see result, for instance
    // by adding input to query and applying input value
    conn.q(conn.db,
           """[:find  ?b ?c
             | :in    $ ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin,
           Seq(42) // input values in list
     ) === List(
      List("Ben", 42)
    )
    db

    Any Datomic Database value (could be asOf(x) etc)

    query

    Datomic query string

    inputs

    Seq of optional input(s) to query

    returns

    List[List[AnyRef]]

  32. def q(query: String, inputs: Any*): List[List[AnyRef]]

    Query Datomic directly with optional Scala inputs.

    Query Datomic directly with optional Scala inputs.

    // Sample data
    Ns.str.int.get === List(
      ("Liz", 37),
      ("Ben", 42),
    )
    
    // Start out easily with a Datomic query from debug output
    Ns.str.int.debugGet // shows datomic query...
    
    // Paste Datomic query into `q` call
    conn.q("""[:find  ?b ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin) === List(
      List("Liz", 37),
      List("Ben", 42)
    )
    
    // Modify Datomic query to see result, for instance
    // by adding input to query and applying input value
    conn.q("""[:find  ?b ?c
             | :in    $ ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin, 42) === List(
      List("Ben", 42)
    )
    query

    Datomic query string

    inputs

    Optional input(s) to query

    returns

    List[List[AnyRef]]

  33. def qRaw(db: Database, query: String, inputs0: Seq[Any]): Collection[List[AnyRef]]

    Query Datomic directly with db value and optional Scala inputs and get raw Java result.

    Query Datomic directly with db value and optional Scala inputs and get raw Java result.

    // Sample data
    Ns.str.int.get === List(
      ("Liz", 37),
      ("Ben", 42),
    )
    
    // Get some Datomic query from debug output
    Ns.str.int.debugGet // shows datomic query...
    
    // Paste Datomic query into `q` call and use some db value
    conn.q(conn.db,
           """[:find  ?b ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin)
        .toString === """[["Liz" 37], ["Ben" 42]]"""
    
    // Modify Datomic query to see result, for instance
    // by adding input to query and applying input value
    conn.q(conn.db,
           """[:find  ?b ?c
             | :in    $ ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin,
           Seq(42) // input values in list
     ).toString === """[["Ben" 42]]"""
    db

    Any Datomic Database value (could be asOf(x) etc)

    query

    Datomic query string

    inputs0

    Seq of optional input(s) to query

    returns

    java.util.Collection[java.util.List[AnyRef]]

  34. def qRaw(query: String, inputs: Any*): Collection[List[AnyRef]]

    Query Datomic directly with optional Scala inputs and get raw Java result.

    Query Datomic directly with optional Scala inputs and get raw Java result.

    // Sample data
    Ns.str.int.get === List(
      ("Liz", 37),
      ("Ben", 42),
    )
    
    // Start out easily with a Datomic query from debug output
    Ns.str.int.debugGet // shows datomic query...
    
    // Paste Datomic query into `q` call
    conn.q("""[:find  ?b ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin)
        .toString === """[["Liz" 37], ["Ben" 42]]"""
    
    // Modify Datomic query to see result, for instance
    // by adding input to query and applying input value
    conn.q("""[:find  ?b ?c
             | :in    $ ?c
             | :where [?a :Ns/str ?b]
             |        [?a :Ns/int ?c]]""".stripMargin, 42).toString === """[["Ben" 42]]"""
    query

    Datomic query string

    inputs

    Optional input(s) to query

    returns

    java.util.Collection[java.util.List[AnyRef]]

  35. def query(model: Model, query: Query): Collection[List[AnyRef]]

    Query Datomic with Model and Query to get raw Java data.

    Query Datomic with Model and Query to get raw Java data.

    Will transparently relegate query depending on Model to:

    - Datalog query execution - Datoms API accessing index - Log API accessing log

    Return type (tuple matching the molecule) is the same for all 3 APIs so that application code can query and access data of all molecules the same way.

    model

    Model instance

    query

    Query instance

    returns

    java.util.Collection[java.util.List[AnyRef]]

  36. final def seq[T](values: Seq[T]): String
    Attributes
    protected
    Definition Classes
    Helpers
  37. def str2date(s: String, zoneOffset: ZoneOffset = localZoneOffset): Date
    Definition Classes
    DateHandling
  38. def str2zdt(s: String, zoneOffset: ZoneOffset = localZoneOffset): ZonedDateTime
    Definition Classes
    DateHandling
  39. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  40. def testDb(db: Database): Unit

    Manually apply a database to use.

  41. def testDbAsOf(txR: TxReport): Unit

    Use test database as of transaction report.

    Use test database as of transaction report.

    txR

    Transaction report

  42. def testDbAsOf(d: Date): Unit

    Use test database as of date.

    Use test database as of date.

    d

    Date

  43. def testDbAsOf(t: Long): Unit

    Use test database as of time t.

    Use test database as of time t.

    t

    Long

  44. def testDbAsOfNow: Unit

    Use test database as of now.

  45. def testDbSince(txR: TxReport): Unit

    Use test database since transaction report.

    Use test database since transaction report.

    txR

    Transaction report

  46. def testDbSince(d: Date): Unit

    Use test database since date.

    Use test database since date.

    d

    Date

  47. def testDbSince(t: Long): Unit

    Use test database since time t.

    Use test database since time t.

    t

    Long

  48. def testDbWith(txDataJava: List[List[AnyRef]]): Unit

    Use test database with temporary raw Java transaction data.

  49. def testDbWith(txData: Seq[Seq[Statement]]*): Unit

    Use test database with temporary transaction data.

    Use test database with temporary transaction data.

    Transaction data can be supplied from any molecule:

    val benId = Person.name("Ben").save.eid
    
    // Use temporary db with given transaction data applied
    conn.testDbWith(
      Person.name("liz").getSaveTx
    )
    
    // Query using temporary database including Liz
    Person.name.get === List("Ben", "Liz")
    
    // Multiple transactions can be applied
    conn.testDbWith(
      Person.name("Joe").getSaveTx,
      benId.getRetractTx
    )
    Person.name.get === List("Liz", "Joe")
    txData

    List of List of transaction Statement's

  50. final def time(n: Int, prev: Int = 0): Unit
    Attributes
    protected
    Definition Classes
    Helpers
  51. def toString(): String
    Definition Classes
    AnyRef → Any
  52. def transact(rawTxStmts: List[AnyRef]): TxReport

    Transact edn files or other raw transaction data.

    Transact edn files or other raw transaction data.

    val data_rdr2 = new FileReader("examples/resources/seattle/seattle-data1a.dtm")
    val rawTxStmts = Util.readAll(data_rdr2).get(0).asInstanceOf[java.util.List[Object]]
    
    // transact
    val result: TxReport = conn.transact(rawTxStmts)
    rawTxStmts

    Raw transaction data, typically from edn file.

    returns

    TxReport

  53. def transact(stmtss: Seq[Seq[Statement]]): TxReport
  54. def transactAsync(rawTxStmts: List[AnyRef])(implicit ec: ExecutionContext): Future[TxReport]

    Asynchronously transact edn files or other raw transaction data.

    Asynchronously transact edn files or other raw transaction data.

    val data_rdr2 = new FileReader("examples/resources/seattle/seattle-data1a.dtm")
    val rawTxStmts = Util.readAll(data_rdr2).get(0).asInstanceOf[java.util.List[Object]]
    
    // transact
    val result: Future[TxReport] = conn.transactAsync(rawTxStmts)
    rawTxStmts

    Raw transaction data, typically from edn file.

    returns

    Future with TxReport with result of transaction

  55. def transactAsync(stmtss: Seq[Seq[Statement]])(implicit ec: ExecutionContext): Future[TxReport]
  56. def truncateDateStr(dateStr: String): String
    Definition Classes
    DateHandling
  57. final def tupleToSeq(arg: Any): Seq[Any]
    Attributes
    protected
    Definition Classes
    Helpers
  58. def unescStr(s: String): String
    Definition Classes
    Helpers
  59. def useLiveDb: Unit

    Get out of test mode and back to live db.

  60. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  61. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  62. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  63. lazy val zone: ZoneId
    Definition Classes
    DateHandling
  64. object mkDate
    Attributes
    protected
    Definition Classes
    Helpers

Inherited from BridgeDatomicFuture

Inherited from Helpers

Inherited from DateHandling

Inherited from RegexMatching

Inherited from AnyRef

Inherited from Any

Ungrouped