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]
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 trait FieldMappingType

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 trait SqlFieldMapping extends FieldMapping
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) extends Cursor
Inherited from:
CirceMapping
case class CirceRoot(otpe: Option[Type], fieldName: String, root: Json, mutation: Mutation)(implicit pos: SourcePos) extends RootMapping
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) extends FieldMapping
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) extends FieldMapping
Inherited from:
Mapping
Inherited from:
Mapping
case class Delegate(fieldName: String, interpreter: Mapping[F], join: (Cursor, Query) => Result[Query])(implicit pos: SourcePos) extends FieldMapping
Inherited from:
Mapping
trait FieldMapping extends Product with Serializable
Inherited from:
Mapping
Inherited from:
Mapping
trait LeafMapping[T] extends TypeMapping
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 class ObjectMapping extends TypeMapping
Inherited from:
Mapping
Inherited from:
Mapping
case class PrefixedMapping(tpe: Type, mappings: List[(List[String], ObjectMapping)])(implicit pos: SourcePos) extends TypeMapping
Inherited from:
Mapping
case class PrimitiveField(fieldName: String, hidden: Boolean)(implicit pos: SourcePos) extends FieldMapping
Inherited from:
Mapping
case class PrimitiveMapping(tpe: Type)(implicit pos: SourcePos) extends TypeMapping
Inherited from:
Mapping
Inherited from:
Mapping
trait SqlFragment[T] extends Monoid[T]

Typeclass for SQL fragments.

Typeclass for SQL fragments.

Inherited from:
SqlModule
trait TypeMapping extends Product with Serializable
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

Returns the discriminator columns for the context type

Returns the discriminator columns for the context type

Returns the discriminator for the type at context

Returns the discriminator for the type at context

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

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

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?

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?

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
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
Inherited from:
Mapping
Inherited from:
SqlModule
Inherited from:
Mapping
def rootCursor(context: Context, fieldName: String, resultName: Option[String], child: Query, env: Env): Stream[F, Result[(Query, Cursor)]]
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
Inherited from:
Mapping

Concrete fields

Inherited fields

Inherited from:
Mapping
Inherited from:
Mapping
Inherited from:
Mapping
Inherited from:
Mapping

Implicits

Inherited implicits

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