com.websudos.morpheus

SQLPrimitive

trait SQLPrimitive[T] extends AnyRef

The innocent reader may now try and ask the question "What does this do?". The type class approach is meant to limit the amount of Data types we inherently recognise as defaults or primitives.

This allows for a very simple limitation mechanism where we exploit the basic Scala implicit resolution mechanism to perform efficient type restrictions and encoding/decoding to/from database results. If a type needs serialisation, we simply request for type evidence via the below type class using implicity[SQLPrimitive[T]]{code}.

If proof exists that the type T has an SQLPrimitive type class associated with it, then the type is considered primitive with regards to the current SQL database in use. This means we will allow for variation of primitive type implementations between different SQL databases. The challenge arises from needing to parse Primitives implicitly in the DSL module itself to create the basic extendable functionality.

We then need to allow other database specific implementations to override these implementations and pass the new ones explicity. As this encapsulates very important information, such as how to decode a specific type from a given database implementation when a query is performed, the breach of this contract means we might as well start another project.

Any below weirdness or poor choice of semantics is probably the only possible way through which the above was achieved This involves defining the default extendable types as normal classes instead of traits to allow their instantiation as overridable vals.

T

The primitive SQL data type to create a type class for.

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. SQLPrimitive
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def fromRow(row: Row, name: String): Option[T]

  2. abstract def sqlType: String

  3. abstract def toSQL(value: T): String

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  18. def toString(): String

    Definition Classes
    AnyRef → Any
  19. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped