SqlMapping

trait SqlMapping[F[_]] extends CirceMapping[F] with SqlModule[F]

An abstract mapping that is backed by a SQL database.

trait SqlModule[F]
class CirceMapping[F]
class Mapping[F]
trait QueryExecutor[F, Json]
class Object
trait Matchable
class Any

Type members

Classlikes

case
class AliasState(next: Int, seenTables: Set[String], tableAliases: Map[(List[String], String), String], seenColumns: Set[String], columnAliases: Map[(List[String], String), String], ownerChain: List[ColumnOwner])

State required to assign table and column aliases.

State required to assign table and column aliases.

Used when rendering an SqlQuery as a Fragment. Table aliases are assigned as needed for recursive queries. Column aliases are assigned to disambiguate collections of columns generated by subqueries and unions.

Companion
object
object AliasState
Companion
class
object Aliased
sealed
trait ColumnOwner extends Product with Serializable

Trait representing an owner of an `SqlColumn

Trait representing an owner of an `SqlColumn

ColumnOwners are tables, SQL queries and subqueries, common table expressions and the like. Most, but not all have a name (SqlSelect, SqlUnion and SqlJoin being unnamed examples)

case
class ColumnRef(table: String, column: String, codec: Codec, scalaTypeName: String, pos: SourcePos)

Name of a SQL schema column and its associated codec, Scala type an defining source position within an SqlMapping.

Name of a SQL schema column and its associated codec, Scala type an defining source position within an SqlMapping.

Columns are considered equal if their table and column names are equal.

Note that ColumnRef primarily play a role in mappings. During compilation they will be used to construct SqlColumns.

Companion
class
sealed

Enumeration representing a kind of field mapping

Enumeration representing a kind of field mapping

Companion
object
case
class Join(parent: ColumnRef, child: ColumnRef)

A pair of ColumnRefs, representing a SQL join.

A pair of ColumnRefs, representing a SQL join.

case
class LeafCursor(context: Context, focus: Any, mapped: MappedQuery, parent: Option[Cursor], env: Env) extends Cursor

Cursor positioned at a GraphQL result leaf

Cursor positioned at a GraphQL result leaf

final
class MappedQuery(query: SqlQuery)

Represents the mapping of a GraphQL query to an SQL query

Represents the mapping of a GraphQL query to an SQL query

Companion
object
Companion
class
object SqlColumn
Companion
class
trait SqlColumn

Trait representing an SQL column

Trait representing an SQL column

Companion
object
case
class SqlColumnTerm(col: SqlColumn) extends Term[Option[Unit]]

Wraps an SqlColumn as a Term which can appear in a Predicate

Wraps an SqlColumn as a Term which can appear in a Predicate

case
class SqlCursor(context: Context, focus: Any, mapped: MappedQuery, parent: Option[Cursor], env: Env) extends Cursor

Cursor positioned at a GraphQL result non-leaf

Cursor positioned at a GraphQL result non-leaf

Common super type for mappings which have a programmatic discriminator, ie. interface and union mappings.

Common super type for mappings which have a programmatic discriminator, ie. interface and union mappings.

Discriminator for the branches of an interface/union

Discriminator for the branches of an interface/union

case
class SqlField(fieldName: String, columnRef: ColumnRef, key: Boolean, discriminator: Boolean, hidden: Boolean, associative: Boolean)(implicit pos: SourcePos) extends SqlFieldMapping
sealed
Companion
class
case
class SqlJson(fieldName: String, columnRef: ColumnRef)(implicit pos: SourcePos) extends SqlFieldMapping
case
class SqlObject(fieldName: String, joins: List[Join])(implicit pos: SourcePos) extends SqlFieldMapping
Companion
object
object SqlObject
Companion
class
object SqlQuery
Companion
class
sealed
trait SqlQuery extends ColumnOwner

Representation of a SQL query in a context

Representation of a SQL query in a context

Companion
object
case
class SqlRoot(fieldName: String, orootTpe: Option[Type], mutation: Mutation)(implicit pos: SourcePos) extends RootMapping
Companion
class
Companion
object
object Table
Companion
class
sealed
trait Table

Representation of an SQL query result

Representation of an SQL query result

Companion
object
object TableExpr
Companion
class
sealed
trait TableExpr extends ColumnOwner

Representation of a table expression

Representation of a table expression

Companion
object

Inherited classlikes

case
class CirceCursor(context: Context, focus: Json, parent: Option[Cursor], env: Env)
Inherited from
CirceMapping
case
class CirceRoot(otpe: Option[Type], fieldName: String, root: Json, mutation: Mutation)(implicit pos: SourcePos)
Inherited from
CirceMapping
object CirceRoot
Inherited from
CirceMapping
case
class CursorField[T](fieldName: String, f: Cursor => Result[T], encoder: Encoder[T], required: List[String], hidden: Boolean)(implicit pos: SourcePos)
Inherited from
Mapping
Inherited from
Mapping
case
class CursorFieldJson(fieldName: String, f: Cursor => Result[Json], encoder: Encoder[Json], required: List[String], hidden: Boolean)(implicit pos: SourcePos)
Inherited from
Mapping
Inherited from
Mapping
case
class Delegate(fieldName: String, interpreter: Mapping[F], join: (Cursor, Query) => Result[Query])(implicit pos: SourcePos)
Inherited from
Mapping
Inherited from
Mapping
Inherited from
Mapping
trait LeafMapping[T]
Inherited from
Mapping
case
class Mutation(run: (Query, Env) => Stream[F, Result[(Query, Env)]])

Root mappings can perform a mutation prior to constructing the result Cursor. A Mutation may perform a Unit effect and simply return the passed arguments; or it may refine the passed Query and/or Env that will be used to interpret the resulting Cursor.

Root mappings can perform a mutation prior to constructing the result Cursor. A Mutation may perform a Unit effect and simply return the passed arguments; or it may refine the passed Query and/or Env that will be used to interpret the resulting Cursor.

Inherited from
Mapping
object Mutation
Inherited from
Mapping
abstract
Inherited from
Mapping
Inherited from
Mapping
case
class PrefixedMapping(tpe: Type, mappings: List[(List[String], ObjectMapping)])(implicit pos: SourcePos)
Inherited from
Mapping
case
class PrimitiveField(fieldName: String, hidden: Boolean)(implicit pos: SourcePos)
Inherited from
Mapping
case
class PrimitiveMapping(tpe: Type)(implicit pos: SourcePos)
Inherited from
Mapping
Inherited from
Mapping
trait SqlFragment[T]

Typeclass for SQL fragments.

Typeclass for SQL fragments.

Inherited from
SqlModule
Inherited from
Mapping

Types

type Aliased[T] = State[AliasState, T]

Inherited types

type Codec

The type of a codec that reads and writes column values of type A.

The type of a codec that reads and writes column values of type A.

Inherited from
SqlModule
type Encoder

The type of an encoder that writes column values of type A.

The type of an encoder that writes column values of type A.

Inherited from
SqlModule

The type of a fragment of SQL together with any interpolated arguments.

The type of a fragment of SQL together with any interpolated arguments.

Inherited from
SqlModule

Value members

Concrete methods

def columnForAtomicField(context: Context, fieldName: String): Option[SqlColumn]

Returns the aliased column corresponding to the atomic field fieldName in context

Returns the aliased column corresponding to the atomic field fieldName in context

def columnForSqlTerm[T](context: Context, term: Term[T]): Option[SqlColumn]

Returns the aliased columns corresponding to term in context

Returns the aliased columns corresponding to term in context

def columnsForLeaf(context: Context, fieldName: String): List[SqlColumn]

Returns the columns for leaf field fieldName in context

Returns the columns for leaf field fieldName in context

def discriminatorColumnsForType(context: Context): List[SqlColumn]

Returns the discriminator columns for the context type

Returns the discriminator columns for the context type

def discriminatorForType(context: Context): Option[SqlDiscriminatedType]

Returns the discriminator for the type at context

Returns the discriminator for the type at context

def encoderForLeaf(tpe: Type): Option[Encoder[Any]]

Returns the Encoder for the given type

Returns the Encoder for the given type

def encoderForTerm(context: Context, term: Term[_]): Option[Encoder]

Returns the Encoder for the given term in context

Returns the Encoder for the given term in context

def fieldMappingType(context: Context, fieldName: String): Option[FieldMappingType]

Return an indicator of the kind of field mapping corresponding to fieldName in context

Return an indicator of the kind of field mapping corresponding to fieldName in context

def isAssociative(context: Context): Boolean

Is the context type mapped to an associative table?

Is the context type mapped to an associative table?

def isComputedField(context: Context, fieldName: String): Boolean

Is fieldName in context computed?

Is fieldName in context computed?

def isJsonb(context: Context, fieldName: String): Boolean

Is fieldName in context Jsonb?

Is fieldName in context Jsonb?

def isSingular(context: Context, fieldName: String, query: Query): Boolean

Does the supplied field correspond to a single, possibly structured, value?

Does the supplied field correspond to a single, possibly structured, value?

def isSqlTerm(context: Context, term: Term[_]): Boolean

Is term in contextexpressible in SQL?

Is term in contextexpressible in SQL?

def keyColumnsForType(context: Context): List[SqlColumn]

Returns the key columns for the context type

Returns the key columns for the context type

def nonLeafList(context: Context, fieldName: String): Boolean

Does the type of fieldName in context represent a list of subobjects?

Does the type of fieldName in context represent a list of subobjects?

def parentTableForType(context: Context): Option[TableRef]

Returns the table for the type at context

Returns the table for the type at context

Inherited methods

Inherited from
SqlModule
def compileAndRun(text: String, name: Option[String], untypedVars: Option[Json], introspectionLevel: IntrospectionLevel, env: Env)(implicit sc: Compiler[F, F]): F[Json]
Inherited from
QueryExecutor
def compileAndRunAll(text: String, name: Option[String], untypedVars: Option[Json], introspectionLevel: IntrospectionLevel, env: Env): Stream[F, Json]
Inherited from
Mapping
def compileAndRunOne(text: String, name: Option[String], untypedVars: Option[Json], introspectionLevel: IntrospectionLevel, env: Env)(implicit sc: Compiler[F, F]): F[Json]
Inherited from
Mapping
def compilerPhases: List[Phase]
Inherited from
Mapping
Inherited from
SqlModule
def fetch(fragment: Fragment, codecs: List[(Boolean, Codec)]): F[Vector[Array[Any]]]
Inherited from
SqlModule
def fieldMapping(context: Context, fieldName: String): Option[FieldMapping]
Inherited from
Mapping
Inherited from
SqlModule
Inherited from
SqlModule
def leafMapping[T](tpe: Type): Option[LeafMapping[T]]
Inherited from
Mapping
Inherited from
SqlModule
def objectMapping(context: Context): Option[ObjectMapping]
Inherited from
Mapping
def rootCursor(context: Context, fieldName: String, resultName: Option[String], child: Query, env: Env): Stream[F, Result[(Query, Cursor)]]
Inherited from
Mapping
def rootMapping(context: Context, fieldName: String): Option[RootMapping]
Inherited from
Mapping
def run(op: Operation, env: Env): Stream[F, Json]
Inherited from
Mapping
def run(query: Query, rootTpe: Type, env: Env): Stream[F, Json]
Inherited from
Mapping
Inherited from
SqlModule

Extract an encoder from a codec.

Extract an encoder from a codec.

Inherited from
SqlModule
def typeMapping(tpe: NamedType): Option[TypeMapping]
Inherited from
Mapping

Concrete fields

Inherited fields

lazy
val compiler: QueryCompiler
Inherited from
Mapping
lazy
val componentElaborator: ComponentElaborator[F]
Inherited from
Mapping
val interpreter: QueryInterpreter[F]
Inherited from
Mapping
val schema: Schema
Inherited from
Mapping
val selectElaborator: SelectElaborator
Inherited from
Mapping
Inherited from
Mapping

Implicits

Inherited implicits

Inherited from
SqlModule
implicit
val M: Monad[F]
Inherited from
Mapping