Blueprint

org.sigilaris.core.application.module.blueprint.Blueprint
See theBlueprint companion object
sealed trait Blueprint[F[_], MName <: String, Owns <: Tuple, Needs <: Tuple, Txs <: Tuple, +R]

Base trait for blueprints (path-independent).

A blueprint is a module specification without a concrete deployment path. The base trait is covariant in the reducer type, allowing both single-module blueprints (StateReducer0) and composed blueprints (RoutedStateReducer0) to be treated uniformly where appropriate.

Phase 5.5 update: Schema is now split into Owns and Needs:

  • Owns: tables that this module owns and will create
  • Needs: tables that this module needs from external providers
  • Deps is replaced by TablesProvider[F, Needs]

Type parameters

F

the effect type

MName

the module name (literal String type)

Needs

the needed schema tuple (tuple of Entry types)

Owns

the owned schema tuple (tuple of Entry types)

R

the reducer type (covariant)

Txs

the transaction types tuple

Attributes

Companion
object
Source
Blueprint.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class ComposedBlueprint[F, MName, Owns, Needs, Txs]
class ModuleBlueprint[F, MName, Owns, Needs, Txs]

Members list

Type members

Types

type EffectType[A] = F[A]

The effect type used by this blueprint.

The effect type used by this blueprint.

Attributes

Source
Blueprint.scala
type ModuleName = MName

The literal module name type.

The literal module name type.

Attributes

Source
Blueprint.scala
type NeedsType = Needs

The needed schema tuple type.

The needed schema tuple type.

Attributes

Source
Blueprint.scala
type OwnsType = Owns

The owned schema tuple type.

The owned schema tuple type.

Attributes

Source
Blueprint.scala
type TxsType = Txs

The transaction types tuple.

The transaction types tuple.

Attributes

Source
Blueprint.scala

Value members

Abstract methods

def moduleValue: ValueOf[MName]

Literal module name for this blueprint.

Literal module name for this blueprint.

Attributes

Source
Blueprint.scala
def owns: Owns

The Entry instances for owned tables (runtime values that can create tables).

The Entry instances for owned tables (runtime values that can create tables).

Attributes

Source
Blueprint.scala
def provider: TablesProvider[F, Needs]

The tables provider for needed external tables.

The tables provider for needed external tables.

Attributes

Source
Blueprint.scala
def reducer0: R

The path-agnostic reducer.

The path-agnostic reducer.

Attributes

Source
Blueprint.scala
def routeHeads: List[String]

Module-relative first segments handled by this blueprint.

Module-relative first segments handled by this blueprint.

Attributes

Source
Blueprint.scala
def txs: TxRegistry[Txs]

The transaction registry.

The transaction registry.

Attributes

Source
Blueprint.scala

Evidence that table names are unique within Owns.

Evidence that table names are unique within Owns.

Phase 5.5: We only check uniqueness of owned tables. External tables (Needs) are provided by TablesProvider and their uniqueness is the responsibility of the provider module.

Attributes

Source
Blueprint.scala