Module
Yoga.Om.Layer
- Package
- purescript-yoga-om-layer
- Repository
- rowtype-yoga/purescript-yoga-om-layer
#combineRequirements Source
combineRequirements :: forall req1 req2 prov1 prov2 err1 err2 provMerged provMergedRaw reqMerged reqDeduped _req1 _req2 _err1 _err2. Union req1 req2 reqMerged => Nub reqMerged reqDeduped => Union req1 _req1 reqDeduped => Union req2 _req2 reqDeduped => Union err1 _err1 () => Union err2 _err2 () => Union prov1 prov2 provMergedRaw => Nub provMergedRaw provMerged => Keys req1 => Keys req2 => OmLayer req1 prov1 err1 -> OmLayer req2 prov2 err2 -> OmLayer reqDeduped provMerged ()The key function: combine two layers with automatic deduplication
#provide Source
provide :: forall req prov1 prov2 err1 err2 _req _prov1 _err1 _err2. Union req _req req => Union prov1 _prov1 prov1 => Union err1 _err1 () => Union err2 _err2 () => Keys req => Keys prov1 => OmLayer prov1 prov2 err2 -> OmLayer req prov1 err1 -> OmLayer req prov2 ()Vertical composition: feed output of one layer into input of another This is the >>> operator from ZIO ZLayer
Example: postgresLive :: OmLayer (config :: Config) (postgres :: SQL) () userRepoLive :: OmLayer (postgres :: SQL) (userRepo :: UserRepo) ()
composed = userRepoLive provide postgresLive
-- Result: OmLayer (config :: Config) (userRepo :: UserRepo) ()
#CheckAllProvided Source
class CheckAllProvided :: Row Type -> Row Type -> Constraintclass CheckAllProvided (required :: Row Type) (available :: Row Type)
Check if all required dependencies are provided
Instances
(RowToList required reqList, RowToList available availList, CheckAllLabelsExist reqList availList required available) => CheckAllProvided required available
#CheckAllLabelsExist Source
class CheckAllLabelsExist :: RowList Type -> RowList Type -> Row Type -> Row Type -> Constraintclass CheckAllLabelsExist (required :: RowList Type) (available :: RowList Type) (requiredRow :: Row Type) (availableRow :: Row Type)
Check that all labels in required RowList exist in available RowList
Instances
CheckAllLabelsExist Nil available requiredRow availableRow(CheckLabelExists label ty available requiredRow availableRow, CheckAllLabelsExist tail available requiredRow availableRow) => CheckAllLabelsExist (Cons label ty tail) available requiredRow availableRow
#CheckLabelExists Source
class CheckLabelExists :: Symbol -> Type -> RowList Type -> Row Type -> Row Type -> Constraintclass CheckLabelExists (label :: Symbol) (ty :: Type) (available :: RowList Type) (requiredRow :: Row Type) (availableRow :: Row Type)
Check if a single label exists in the available RowList
Instances
(TypeEquals ty ty') => CheckLabelExists label ty (Cons label ty' tail) requiredRow availableRow(CheckLabelExists label ty tail requiredRow availableRow) => CheckLabelExists label ty (Cons otherLabel otherTy tail) requiredRow availableRow(Fail (Above (Text "Missing required dependency!") (Above (Text "") (Above (Text "The first missing field is: ") (Above (Quote label) (Above (Text "") (Above (Text "The layer requires: ") (Above (Quote requiredRow) (Above (Text "") (Above (Text "But you provided: ") (Quote availableRow))))))))))) => CheckLabelExists label ty Nil requiredRow availableRow
- Modules
- Yoga.
Om. Layer