Class

com.outworkers.phantom.macros

TableHelperMacro

Related Doc: package macros

Permalink

class TableHelperMacro extends MacroUtils

Linear Supertypes
MacroUtils, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TableHelperMacro
  2. MacroUtils
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new TableHelperMacro(c: Context)

    Permalink

Type Members

  1. case class Field(name: scala.reflect.macros.Universe.TermName, tpe: scala.reflect.macros.Universe.Type) extends Product with Serializable

    Permalink
  2. case class Match(results: List[Field], partition: Boolean) extends TableMatchResult with Product with Serializable

    Permalink
  3. trait TableMatchResult extends AnyRef

    Permalink

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. object Field extends Serializable

    Permalink
  5. object NoMatch extends TableMatchResult with Product with Serializable

    Permalink
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. val c: Context

    Permalink
    Definition Classes
    TableHelperMacroMacroUtils
  8. def caseFields(tpe: scala.reflect.macros.Universe.Type): Iterable[(scala.reflect.macros.Universe.Name, scala.reflect.macros.Universe.Type)]

    Permalink
    Definition Classes
    MacroUtils
  9. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. val colSymbol: scala.reflect.macros.Universe.Symbol

    Permalink
  11. def determineReferenceTable(tpe: scala.reflect.macros.Universe.Type): Option[scala.reflect.macros.Universe.Symbol]

    Permalink

    Finds the first type in the type hierarchy for which columns exist as direct members.

    Finds the first type in the type hierarchy for which columns exist as direct members.

    tpe

    The type of the table.

    returns

    An optional symbol, if such a type was found in the type hierarchy.

  12. final def eq(arg0: AnyRef): Boolean

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

    Permalink
    Definition Classes
    AnyRef → Any
  14. val exclusions: (scala.reflect.macros.Universe.Symbol) ⇒ Option[scala.reflect.macros.Universe.Symbol]

    Permalink
  15. def extractColumnMembers(table: scala.reflect.macros.Universe.Type, columns: List[scala.reflect.macros.Universe.Symbol]): List[Field]

    Permalink
  16. def extractRecordMembers(tpe: scala.reflect.macros.Universe.Type): Iterable[Field]

    Permalink

    A "generic" type extractor that's meant to produce a list of fields from a record type.

    A "generic" type extractor that's meant to produce a list of fields from a record type. We support a narrow domain of types for automated generation, currently including: - Case classes - Tuples

    To achieve this, we simply have specific ways of extracting the types from the underlying records, and producing a Field for each of the members in the product type,

    tpe

    The underlying record type that was passed as the second argument to a Cassandra table.

    returns

    An iterable of fields, each containing a TermName and a Type that describe a record member.

  17. def extractTableName(source: scala.reflect.macros.Universe.Type): String

    Permalink

    Extracts the name of the table that will be generated and used in Cassandra.

    Extracts the name of the table that will be generated and used in Cassandra. This can be changed at runtime by the user by overriding CassandraTable.tableName. This mechanism is incompatible with the historical way we used to do this, effectively using the type inferred by the final database object.

    Instead, at present times, it is the type hierarchy that dictates what a table will be called, and the first member of the type hierarchy of a table type with columns defined will dictate the name.

    source

    The source table type to extract the name from. We rely on this to be the first in the hierarchy to contain column definitions, determined by determineReferenceTable() above.

  18. def filterColumns[Filter](columns: Seq[scala.reflect.macros.Universe.Type])(implicit arg0: scala.reflect.macros.Universe.TypeTag[Filter]): Seq[scala.reflect.macros.Universe.Type]

    Permalink
  19. def filterMembers[T, Filter](exclusions: (scala.reflect.macros.Universe.Symbol) ⇒ Option[scala.reflect.macros.Universe.Symbol] = ...)(implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T], arg1: scala.reflect.macros.Universe.TypeTag[Filter]): Seq[scala.reflect.macros.Universe.Symbol]

    Permalink
    Definition Classes
    MacroUtils
  20. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  21. def findMatchingSubset(tableName: scala.reflect.macros.Universe.Name, members: List[Field], recordMembers: Iterable[Field]): TableMatchResult

    Permalink

    Finds a matching subset of columns inside a table definition where the extracted type from a table does not need to include all of the columns inside a table.

    Finds a matching subset of columns inside a table definition where the extracted type from a table does not need to include all of the columns inside a table.

    This addresses https://websudos.atlassian.net/browse/PHANTOM-237.

    members

    The type members of the table.

    recordMembers

    The type members of the record type.

  22. final def getClass(): Class[_]

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

    Permalink
    Definition Classes
    AnyRef → Any
  24. def inferPrimaryKey(tableName: String, table: scala.reflect.macros.Universe.Type, columns: Seq[scala.reflect.macros.Universe.Type]): scala.reflect.macros.Universe.Tree

    Permalink

    This method will check for common Cassandra anti-patterns during the intialisation of a schema.

    This method will check for common Cassandra anti-patterns during the intialisation of a schema. If the Schema definition violates valid CQL standard, this function will throw an error.

    A perfect example is using a mixture of Primary keys and Clustering keys in the same schema. While a Clustering key is also a primary key, when defining a clustering key all other keys must become clustering keys and specify their order.

    We could auto-generate this order but we wouldn't be making false assumptions about the desired ordering.

  25. def insertQueryType(table: scala.reflect.macros.Universe.Type, record: scala.reflect.macros.Universe.Type): scala.reflect.macros.Universe.Tree

    Permalink
  26. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  27. val knownList: List[String]

    Permalink
  28. def macroImpl[T, R](implicit arg0: scala.reflect.macros.Universe.WeakTypeTag[T], arg1: scala.reflect.macros.Universe.WeakTypeTag[R]): scala.reflect.macros.Universe.Tree

    Permalink
  29. def materializeExtractor[T](tableTpe: scala.reflect.macros.Universe.Type, recordTpe: scala.reflect.macros.Universe.Type, columns: List[scala.reflect.macros.Universe.Symbol]): Option[scala.reflect.macros.Universe.Tree]

    Permalink

    Materializes an extractor method for a table, the so called "fromRow" method.

    Materializes an extractor method for a table, the so called "fromRow" method.

    This will only work if the types of the record type match the types inferred by the return types of the columns inside the table.

    If the implementation could not be inferred, the output of this method will be the unimplemented method exception and the user will have to manually override the fromRow definition and create one themselves.

    def fromRow(row: Row): R = ???

    Not only that but they also have to be in the same order. For example:

    case class MyRecord(
      id: UUID,
      email: String,
      date: DateTime
    )
    
    class MyTable extends CassandraTable[MyTable, MyRecord] {
      object id extends UUIDColumn(this) with PartitionKey
      object email extends StringColumn(this)
      object date extends DateTimeColumn(this)
    }
    returns

    An interpolated tree that will contain the automatically generated implementation of the fromRow method in a Cassandra Table. Alternatively, this will return an unimplemented ??? method, provided a correct definition could not be inferred.

  30. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  31. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  32. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  33. val rootConn: scala.reflect.macros.Universe.Symbol

    Permalink
  34. val selectTable: scala.reflect.macros.Universe.Symbol

    Permalink
  35. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  36. val tableSym: scala.reflect.macros.Universe.Symbol

    Permalink
  37. def toString(): String

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from MacroUtils

Inherited from AnyRef

Inherited from Any

Ungrouped