ComposedBlueprint

org.sigilaris.core.application.module.blueprint.ComposedBlueprint
final class ComposedBlueprint[F[_], MName <: String, Owns <: Tuple, Needs <: Tuple, Txs <: Tuple](val owns: Owns, val reducer0: RoutedStateReducer0[F, Owns, Needs], val txs: TxRegistry[Txs], val provider: TablesProvider[F, Needs], val routeHeads: List[String])(using val uniqueNames: UniqueNames[Owns], val moduleValue: ValueOf[MName]) extends Blueprint[F, MName, Owns, Needs, Txs, RoutedStateReducer0[F, Owns, Needs]]

Composed blueprint (path-independent).

A composed blueprint is the result of combining two or more module blueprints. It uses RoutedStateReducer0, which REQUIRES all transactions to implement ModuleRoutedTx for routing purposes.

The type system enforces this requirement at compile time: attempting to apply a non-routed transaction to a ComposedBlueprint's reducer will be a compile error.

Phase 5.5 update: Now explicitly models Owns and Needs like ModuleBlueprint.

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)

Txs

the transaction types tuple

Value parameters

owns

the Entry instances for owned tables (runtime values)

provider

the tables provider for needed external tables

reducer0

the routed reducer (requires ModuleRoutedTx)

txs

the transaction registry

uniqueNames

evidence that table names are unique within Owns

Attributes

Source
Blueprint.scala
Graph
Supertypes
trait Blueprint[F, MName, Owns, Needs, Txs, RoutedStateReducer0[F, Owns, Needs]]
class Object
trait Matchable
class Any

Members list

Type members

Inherited types

type EffectType[A] = F[A]

The effect type used by this blueprint.

The effect type used by this blueprint.

Attributes

Inherited from:
Blueprint
Source
Blueprint.scala
type ModuleName = MName

The literal module name type.

The literal module name type.

Attributes

Inherited from:
Blueprint
Source
Blueprint.scala
type NeedsType = Needs

The needed schema tuple type.

The needed schema tuple type.

Attributes

Inherited from:
Blueprint
Source
Blueprint.scala
type OwnsType = Owns

The owned schema tuple type.

The owned schema tuple type.

Attributes

Inherited from:
Blueprint
Source
Blueprint.scala
type TxsType = Txs

The transaction types tuple.

The transaction types tuple.

Attributes

Inherited from:
Blueprint
Source
Blueprint.scala

Value members

Concrete fields

val 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
val provider: TablesProvider[F, Needs]

The tables provider for needed external tables.

The tables provider for needed external tables.

Attributes

Source
Blueprint.scala
val reducer0: RoutedStateReducer0[F, Owns, Needs]

The path-agnostic reducer.

The path-agnostic reducer.

Attributes

Source
Blueprint.scala
val routeHeads: List[String]

Module-relative first segments handled by this blueprint.

Module-relative first segments handled by this blueprint.

Attributes

Source
Blueprint.scala
val txs: TxRegistry[Txs]

The transaction registry.

The transaction registry.

Attributes

Source
Blueprint.scala

Givens

Givens

given moduleValue: ValueOf[MName]

Literal module name for this blueprint.

Literal module name for this blueprint.

Attributes

Source
Blueprint.scala
given uniqueNames: UniqueNames[Owns]

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