molecule

package molecule

Members list

Type members

Classlikes

case class DataModel(maxArity: Int) extends DataModelApi

Data Model DSL.

Define a Domain Data Model in a data model file.

For small projects, the schema can be defined without partition definitions where all namespaces reside in a default tacit partition:

Data Model DSL.

Define a Domain Data Model in a data model file.

For small projects, the schema can be defined without partition definitions where all namespaces reside in a default tacit partition:

package path.to.your.project
import molecule.data.model._       // import data model DSL

object Seattle extends DataModel(8) {  // data model object with input/output arity

 trait Person {                   // Namespace
   val name = oneString.fulltext  // String attribute definition with fulltext search
   val age  = oneInt              // Int attribute definition
 }

 // Additional namespaces...
}

For larger projects, it is recommended to group namespaces in partitions:

package path.to.your.project
import molecule.data.model._

object Seattle extends DataModel(15) {

 object customer {
   trait Person {
     val name    = oneString.fulltext
     val age     = oneInt
     val address = one[Address]
     val bought  = many[products.Item]
   }
   trait Address {
     val street = oneString.fulltext
     val city   = oneInt
   }
   // ..more namespaces in the `customer` partition
 }

 object products {
   trait Item {
     val title   = oneString
     val inStock = oneInt
   }
   // ..more namespaces in the `products` partition
 }

 // Additional partitions...
}

Attributes

Source
DataModel.scala
Supertypes
trait Serializable
trait Product
trait Equals
trait DataModelApi
class Object
trait Matchable
class Any
Show all
Known subtypes
object Partitions.type
object Refs.type
object Types.type
object Uniques.type
object Validation.type