| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Napkin.Run.Effects
Synopsis
- module Napkin.Run.Effects.Languages.FatalError
- getCurrentTime :: forall (effs :: EffectRow). Member (Time :: (Type -> Type) -> Type -> Type) effs => Sem effs UTCTime
- getAnnotations :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r TableAnnotations
- getTargetAnnotations :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateRead b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Sem effs TableAnnotations
- annotateColumn :: forall {k} (b :: k) (effs :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) effs => Ref Table -> Ref SExp -> Text -> Sem effs ()
- annotateColumns :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> ColumnsAnnotations -> Sem r ()
- annotateTable :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Sem r ()
- annotateTargetColumn :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Ref SExp -> Text -> Sem effs ()
- annotateTargetColumns :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => ColumnsAnnotations -> Sem effs ()
- annotateTargetTable :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Text -> Sem effs ()
- pattern FailureWithMessage :: Text -> AssertionStatus
- assert :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> AssertionStatus -> Sem r ()
- assert' :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => AssertionGroup -> AssertionSeverity -> Text -> AssertionStatus -> Sem r ()
- assertEquals :: forall a (r :: EffectRow). (Eq a, Member (Assertion :: (Type -> Type) -> Type -> Type) r) => Text -> a -> a -> Sem r ()
- assertError :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem ((Error Text :: (Type -> Type) -> Type -> Type) ': r) () -> Sem r ()
- assertM :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem r AssertionStatus -> Sem r ()
- assertTrue :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Sem r ()
- assertTrueWith :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Text -> Sem r ()
- assertTrueWithM :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Sem r Text -> Sem r ()
- describe :: forall (r :: EffectRow) a. Members '[Assertion :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r a -> Sem r a
- describe' :: forall (r :: EffectRow) a. Members '[Assertion :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => [Text] -> Sem r a -> Sem r a
- failedAssertion :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem r ()
- warnOnly :: forall (r :: EffectRow) a. Member (Assertion :: (Type -> Type) -> Type -> Type) r => Sem r a -> Sem r a
- executeExternalCommand :: forall (effs :: EffectRow). Members '[FatalError :: (Type -> Type) -> Type -> Type, External :: (Type -> Type) -> Type -> Type] effs => ExternalCommand -> Sem effs ()
- loadQueryFromFile :: forall (r :: EffectRow). Member (LoadQuery :: (Type -> Type) -> Type -> Type) r => FilePath -> SqlTemplateVariables -> Sem r (Either LoadQueryError Text)
- loadSqlFile :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, LoadQuery :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => FilePath -> SqlTemplateVariables -> Sem r Query
- logAlert :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logAlert' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logCritical :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logCritical' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logDebug :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logDebug' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logEmergency :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logEmergency' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logError :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logError' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logInfo :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logInfo' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logNotice :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logNotice' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- logWarning :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs ()
- logWarning' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs ()
- recreateMaterializedViewAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendMaterializedViewMeta b -> Ref Table -> Query -> Sem r ()
- recreateTableAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendTableMeta b -> Ref Table -> NonEmpty Query -> Sem r ()
- recreateTableStatement :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendTableMeta b -> CreateTableDDL -> [InsertStatement] -> Sem effs ()
- recreateTargetMaterializedView :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendMaterializedViewMeta b -> Query -> Sem effs ()
- recreateTargetTable :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendTableMeta b -> NonEmpty Query -> Sem effs ()
- recreateTargetView :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendViewMeta b -> Query -> Sem effs ()
- recreateViewAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendViewMeta b -> Ref Table -> Query -> Sem r ()
- overrideDialect :: forall (r :: EffectRow) a. Member (Reader SQLDialect) r => SQLDialect -> Sem r a -> Sem r a
- parseSqlExp :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => SourceLocation -> Text -> Sem r SExp
- parseSqlQuery :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => SourceLocation -> Text -> Sem r Query
- parseStatements :: forall (r :: EffectRow) a. (Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r, Stateable a) => TargetName -> SourceLocation -> Text -> Sem r [a]
- checkTableExists :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r Bool
- getRelationSchema :: forall {k} (b :: k) (r :: EffectRow). Members '[SqlRead b :: (Type -> Type) -> Type -> Type, Input TemporaryTableName :: (Type -> Type) -> Type -> Type] r => Relation -> Sem r [BackendSchemaField b]
- getTableKind :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r TableKind
- runQuery :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Query -> Sem r [Map Text Value]
- runQuerySingleAnswer :: forall {k} (b :: k) a (r :: EffectRow). (Member (SqlRead b :: (Type -> Type) -> Type -> Type) r, Val a) => Query -> Sem r (Maybe a)
- renderQuery :: forall (r :: EffectRow). Member (SqlRender :: (Type -> Type) -> Type -> Type) r => Query -> Sem r SqlText
- renderSExp :: forall (r :: EffectRow). Member (SqlRender :: (Type -> Type) -> Type -> Type) r => SExp -> Sem r SqlText
- addColumn :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Type -> Sem r ()
- copyTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Ref Table -> TableWriteStrategy -> Sem r ()
- copyTableToTarget :: forall b (r :: EffectRow). Members '[Reader TargetName, SqlWrite b :: (Type -> Type) -> Type -> Type] r => Ref Table -> TableWriteStrategy -> Sem r ()
- createMaterializedViewAs :: forall b (r :: EffectRow). (Default (BackendMaterializedViewMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r ()
- createMaterializedViewAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendMaterializedViewMeta b -> Ref Table -> Query -> Sem r ()
- createTableAs :: forall b (r :: EffectRow). (Default (BackendTableMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r ()
- createTableAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendTableMeta b -> Ref Table -> Query -> Sem r ()
- createViewAs :: forall b (r :: EffectRow). (Default (BackendViewMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r ()
- createViewAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendViewMeta b -> Ref Table -> Query -> Sem r ()
- deleteFrom :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> SExp -> Sem r ()
- dropColumn :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Sem r ()
- dropMaterializedView :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r ()
- dropTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r ()
- dropView :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r ()
- insertInto :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> InsertColumnsList -> Query -> Sem r ()
- renameTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Ref Table -> Sem r ()
- updateTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => UpdateQuery -> Sem r ()
- addDependencies :: forall (r :: EffectRow). Member (Output ExtraDependencies :: (Type -> Type) -> Type -> Type) r => Set (Ref Table) -> Sem r ()
- addDependency :: forall (r :: EffectRow). Member (Output ExtraDependencies :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r ()
- applyTransformer :: forall (r :: EffectRow) a. Member (Reader QueryTransformer) r => QueryTransformerUnit -> Sem r a -> Sem r a
- deleteFromTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => SExp -> Sem effs ()
- hideArtifact :: forall a (r :: EffectRow). Member (Reader HiddenArtifacts) r => Ref Table -> Sem r a -> Sem r a
- hideDependencies :: forall a (r :: EffectRow). Member (Reader HiddenDependencies) r => Set (Ref Table) -> Sem r a -> Sem r a
- hideDependency :: forall a (r :: EffectRow). Member (Reader HiddenDependencies) r => Ref Table -> Sem r a -> Sem r a
- insertQueryIntoTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Query -> Sem effs ()
- overrideTarget :: forall a (r :: EffectRow). Member (Reader TargetName) r => Ref Table -> Sem r a -> Sem r a
- renameReferences :: forall (r :: EffectRow) a. Member (Reader QueryTransformer) r => (Ref Table -> Ref Table) -> Sem r a -> Sem r a
- updateTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => (Ref Relation -> U ()) -> Sem effs ()
- askArg :: forall a (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) => Text -> Sem r a
- askArgMb :: forall a (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) => Text -> Sem r (Maybe a)
- askBoolArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Bool
- askBoolArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Bool -> Text -> Sem r Bool
- askBoolArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Bool)
- askNumArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Scientific
- askNumArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Scientific -> Text -> Sem r Scientific
- askNumArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Scientific)
- askTextArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Text
- askTextArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Text -> Sem r Text
- askTextArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Text)
- withTypedArg :: forall a b (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r, Typeable a) => (a -> Sem r b) -> Sem r b
- parserlessHook :: HookProgram b -> HookProgramWithArgParser b
- parserlessSpec :: SpecProgram b -> SpecProgramWithArgParser b
- parserlessPreprocessor :: SpecPreprocessor b -> SpecPreprocessorWithArgParser b
- announceMetaArguments :: SpecProgramArguments -> b -> (SpecProgramArguments, b)
- noMetaArguments :: b -> (SpecProgramArguments, b)
- optionalArg :: SpecProgramArgumentDescription -> SpecProgramArgumentDefinition
- requiredArg :: SpecProgramArgumentDescription -> SpecProgramArgumentDefinition
- requiredArgDef :: ToJSON a => a -> SpecProgramArgumentDescription -> SpecProgramArgumentDefinition
- newtype RandomToken = RandomToken {}
- type Time = Input UTCTime :: k1 -> Type -> Type
- data SQLDialect
- data AnnotateRead (b :: k) (m :: k1) a
- data TableAnnotations = TableAnnotations {}
- data AnnotateWrite (b :: k) (m :: k1) a
- data Assertion (m :: k) a
- data AssertionStatus
- data External (m :: k) a
- data LoadQuery (m :: k) a
- newtype LoadQueryError = LoadQueryError Text
- type Log = Output LogLine :: k -> Type -> Type
- data RecreateTable b (m :: k) a
- data SqlParse (m :: k) a
- newtype TargetName = TargetName (Ref Table)
- data SqlRead (b :: k) (m :: k1) a
- data SqlRender (m :: k) a
- data Cascade
- data MissingBehavior
- data SqlWrite b (m :: k) a
- newtype ExtraDependencies = ExtraDependencies (Set (Ref Table))
- newtype HiddenArtifacts = HiddenArtifacts (Set (Ref Table))
- newtype HiddenDependencies = HiddenDependencies (Set (Ref Table))
- newtype MetaArguments = MetaArguments {}
- newtype TableMemo = TableMemo [Value]
- newtype TableMemos = TableMemos (Map SpecTableName TableMemo)
- type HookProgram b = HookProgram' b ()
- type HookProgram' b a = Sem (TableHookProgramEffects b) a
- newtype HookProgramWithArgParser b = HookProgramWithArgParser (Object -> Parser (SpecProgramArguments, HookProgram b))
- type IOGlobalHookProgram b = IOGlobalHookProgram' b ()
- type IOGlobalHookProgram' b a = Sem (IOGlobalHookProgramEffects b) a
- type PureGlobalHookProgram b = PureGlobalHookProgram' b ()
- type PureGlobalHookProgram' b a = Sem (PureGlobalHookProgramEffects b) a
- class RunBackendEffect b where
- runBackendEffectReal :: forall (m :: Type -> Type) (r :: EffectRow) a. (LocalQueryStats b m, Members '[FatalError :: (Type -> Type) -> Type -> Type, Embed m] r, MonadNapkin b m, SqlIO m) => BackendConn b -> Sem (BackendSpecificEffect b ': r) a -> Sem r a
- runBackendEffectFake :: forall (r :: EffectRow) a. Members '[Reader HiddenDependencies, State IState :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => Sem (BackendSpecificEffect b ': r) a -> Sem r a
- interceptBackendEffectDiscoverDependencies :: forall (r :: EffectRow) a. Members '[Input (Transformed HiddenDependencies) :: (Type -> Type) -> Type -> Type, Output Dependencies :: (Type -> Type) -> Type -> Type, BackendSpecificEffect b] r => Sem r a -> Sem r a
- interceptBackendEffectApplyQueryTransformer :: forall (r :: EffectRow) a. Members '[Output ExtraDependencies :: (Type -> Type) -> Type -> Type, Reader QueryTransformer, BackendSpecificEffect b] r => Sem r a -> Sem r a
- backendDependencyValidator :: Proxy b -> [(SpecDependency -> Ref Table) -> SpecsDepsTables -> [WithSpecTable Text]]
- type SpecProgram b = SpecProgram' b ()
- type SpecProgram' b a = Sem (SpecProgramEffects b) a
- newtype SpecProgramWithArgParser b = SpecProgramWithArgParser (Object -> Parser (SpecProgramArguments, SpecProgram b))
- newtype SpecPreprocessorWithArgParser b = SpecPreprocessorWithArgParser (Object -> Parser (SpecProgramArguments, SpecPreprocessor b))
- type family Members (es :: [Effect]) (r :: EffectRow) where ...
- data Sem (r :: EffectRow) a
- class Member (t :: Effect) (r :: EffectRow)
Documentation
getCurrentTime :: forall (effs :: EffectRow). Member (Time :: (Type -> Type) -> Type -> Type) effs => Sem effs UTCTime #
getAnnotations :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r TableAnnotations #
getTargetAnnotations :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateRead b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Sem effs TableAnnotations #
annotateColumn :: forall {k} (b :: k) (effs :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) effs => Ref Table -> Ref SExp -> Text -> Sem effs () #
annotateColumns :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> ColumnsAnnotations -> Sem r () #
annotateTable :: forall {k} (b :: k) (r :: EffectRow). Member (AnnotateWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Sem r () #
annotateTargetColumn :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Ref SExp -> Text -> Sem effs () #
annotateTargetColumns :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => ColumnsAnnotations -> Sem effs () #
annotateTargetTable :: forall {k} (b :: k) (effs :: EffectRow). Members '[AnnotateWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Text -> Sem effs () #
pattern FailureWithMessage :: Text -> AssertionStatus #
assert :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> AssertionStatus -> Sem r () #
assert' :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => AssertionGroup -> AssertionSeverity -> Text -> AssertionStatus -> Sem r () #
Assertions are run-time checks based on actual results that may be returned by various operations. Dry runs may ignore these failures, but they're respected in real operations.
assertEquals :: forall a (r :: EffectRow). (Eq a, Member (Assertion :: (Type -> Type) -> Type -> Type) r) => Text -> a -> a -> Sem r () #
assertError :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem ((Error Text :: (Type -> Type) -> Type -> Type) ': r) () -> Sem r () #
assertM :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem r AssertionStatus -> Sem r () #
assertTrue :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Sem r () #
assertTrueWith :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Text -> Sem r () #
assertTrueWithM :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Bool -> Sem r Text -> Sem r () #
describe :: forall (r :: EffectRow) a. Members '[Assertion :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r a -> Sem r a #
describe' :: forall (r :: EffectRow) a. Members '[Assertion :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => [Text] -> Sem r a -> Sem r a #
failedAssertion :: forall (r :: EffectRow). Member (Assertion :: (Type -> Type) -> Type -> Type) r => Text -> Sem r () #
warnOnly :: forall (r :: EffectRow) a. Member (Assertion :: (Type -> Type) -> Type -> Type) r => Sem r a -> Sem r a #
executeExternalCommand :: forall (effs :: EffectRow). Members '[FatalError :: (Type -> Type) -> Type -> Type, External :: (Type -> Type) -> Type -> Type] effs => ExternalCommand -> Sem effs () #
loadQueryFromFile :: forall (r :: EffectRow). Member (LoadQuery :: (Type -> Type) -> Type -> Type) r => FilePath -> SqlTemplateVariables -> Sem r (Either LoadQueryError Text) #
loadSqlFile :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, LoadQuery :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => FilePath -> SqlTemplateVariables -> Sem r Query #
logAlert :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logAlert' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logCritical :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logCritical' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logDebug :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logDebug' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logEmergency :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logEmergency' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logError :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logError' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logInfo :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logInfo' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logNotice :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logNotice' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
logWarning :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LText -> Sem effs () #
logWarning' :: forall (effs :: EffectRow). Member (Log :: (Type -> Type) -> Type -> Type) effs => LogItem -> LText -> Sem effs () #
recreateMaterializedViewAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendMaterializedViewMeta b -> Ref Table -> Query -> Sem r () #
recreateTableAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendTableMeta b -> Ref Table -> NonEmpty Query -> Sem r () #
recreateTableStatement :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendTableMeta b -> CreateTableDDL -> [InsertStatement] -> Sem effs () #
recreateTargetMaterializedView :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendMaterializedViewMeta b -> Query -> Sem effs () #
recreateTargetTable :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendTableMeta b -> NonEmpty Query -> Sem effs () #
recreateTargetView :: forall b (effs :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => BackendViewMeta b -> Query -> Sem effs () #
recreateViewAs :: forall b (r :: EffectRow). Member (RecreateTable b :: (Type -> Type) -> Type -> Type) r => BackendViewMeta b -> Ref Table -> Query -> Sem r () #
overrideDialect :: forall (r :: EffectRow) a. Member (Reader SQLDialect) r => SQLDialect -> Sem r a -> Sem r a #
parseSqlExp :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => SourceLocation -> Text -> Sem r SExp #
parseSqlQuery :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => SourceLocation -> Text -> Sem r Query #
parseStatements :: forall (r :: EffectRow) a. (Members '[SqlParse :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r, Stateable a) => TargetName -> SourceLocation -> Text -> Sem r [a] #
checkTableExists :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r Bool #
getRelationSchema :: forall {k} (b :: k) (r :: EffectRow). Members '[SqlRead b :: (Type -> Type) -> Type -> Type, Input TemporaryTableName :: (Type -> Type) -> Type -> Type] r => Relation -> Sem r [BackendSchemaField b] #
getTableKind :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r TableKind #
runQuery :: forall {k} (b :: k) (r :: EffectRow). Member (SqlRead b :: (Type -> Type) -> Type -> Type) r => Query -> Sem r [Map Text Value] #
runQuerySingleAnswer :: forall {k} (b :: k) a (r :: EffectRow). (Member (SqlRead b :: (Type -> Type) -> Type -> Type) r, Val a) => Query -> Sem r (Maybe a) #
Run a query and pull out the first column from its first row. Meant for queries that return a single result.
renderQuery :: forall (r :: EffectRow). Member (SqlRender :: (Type -> Type) -> Type -> Type) r => Query -> Sem r SqlText #
renderSExp :: forall (r :: EffectRow). Member (SqlRender :: (Type -> Type) -> Type -> Type) r => SExp -> Sem r SqlText #
addColumn :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Type -> Sem r () #
copyTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Ref Table -> TableWriteStrategy -> Sem r () #
copyTableToTarget :: forall b (r :: EffectRow). Members '[Reader TargetName, SqlWrite b :: (Type -> Type) -> Type -> Type] r => Ref Table -> TableWriteStrategy -> Sem r () #
createMaterializedViewAs :: forall b (r :: EffectRow). (Default (BackendMaterializedViewMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r () #
createMaterializedViewAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendMaterializedViewMeta b -> Ref Table -> Query -> Sem r () #
createTableAs :: forall b (r :: EffectRow). (Default (BackendTableMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r () #
createTableAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendTableMeta b -> Ref Table -> Query -> Sem r () #
createViewAs :: forall b (r :: EffectRow). (Default (BackendViewMeta b), Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r) => Ref Table -> Query -> Sem r () #
createViewAsWithMeta :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => BackendViewMeta b -> Ref Table -> Query -> Sem r () #
deleteFrom :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> SExp -> Sem r () #
dropColumn :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Text -> Sem r () #
dropMaterializedView :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r () #
dropTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r () #
dropView :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> MissingBehavior -> Cascade -> Sem r () #
insertInto :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> InsertColumnsList -> Query -> Sem r () #
renameTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => Ref Table -> Ref Table -> Sem r () #
updateTable :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => UpdateQuery -> Sem r () #
addDependencies :: forall (r :: EffectRow). Member (Output ExtraDependencies :: (Type -> Type) -> Type -> Type) r => Set (Ref Table) -> Sem r () #
Add the given references to list of dependencies for the underlying region.
Later during interpretation, this will cause the given dependencies to be forcefully considered upstream dependencies within the enclosed region even though they were not seen in the parsed SQL.
addDependency :: forall (r :: EffectRow). Member (Output ExtraDependencies :: (Type -> Type) -> Type -> Type) r => Ref Table -> Sem r () #
Add the given reference to list of dependency for the underlying region.
Later during interpretation, this will cause the given dependency to be forcefully considered upstream dependency within the enclosed region even though they were not seen in the parsed SQL.
applyTransformer :: forall (r :: EffectRow) a. Member (Reader QueryTransformer) r => QueryTransformerUnit -> Sem r a -> Sem r a #
Comprehensively apply the given transformer around the given region.
deleteFromTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => SExp -> Sem effs () #
hideArtifact :: forall a (r :: EffectRow). Member (Reader HiddenArtifacts) r => Ref Table -> Sem r a -> Sem r a #
Add the given artifact to the hide list around the given region.
Later during interpretation, this will cause the given artifact to not be reported to the tablespec within the enclosed region.
hideDependencies :: forall a (r :: EffectRow). Member (Reader HiddenDependencies) r => Set (Ref Table) -> Sem r a -> Sem r a #
Add the given dependencies to the hide list around the given region.
Later during interpretation, this will cause the given dependencies to not be considered upstream dependencies within the enclosed region.
hideDependency :: forall a (r :: EffectRow). Member (Reader HiddenDependencies) r => Ref Table -> Sem r a -> Sem r a #
Add the given dependency to the hide list around the given region.
Later during interpretation, this will cause the given dependency to not be considered upstream dependency within the enclosed region.
insertQueryIntoTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => Query -> Sem effs () #
overrideTarget :: forall a (r :: EffectRow). Member (Reader TargetName) r => Ref Table -> Sem r a -> Sem r a #
renameReferences :: forall (r :: EffectRow) a. Member (Reader QueryTransformer) r => (Ref Table -> Ref Table) -> Sem r a -> Sem r a #
Apply given table name renamer to every single reference occurrence everywhere.
If you want to target only certain tables, make sure the function you provide here does the filtering internally.
updateTarget :: forall b (effs :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, Reader TargetName] effs => (Ref Relation -> U ()) -> Sem effs () #
askArg :: forall a (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) => Text -> Sem r a #
askArgMb :: forall a (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) => Text -> Sem r (Maybe a) #
askBoolArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Bool #
askBoolArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Bool -> Text -> Sem r Bool #
askBoolArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Bool) #
askNumArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Scientific #
askNumArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Scientific -> Text -> Sem r Scientific #
askNumArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Scientific) #
askTextArg :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r Text #
askTextArgDefault :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Text -> Sem r Text #
askTextArgMb :: forall (r :: EffectRow). Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => Text -> Sem r (Maybe Text) #
withTypedArg :: forall a b (r :: EffectRow). (FromJSON a, Members '[Input MetaArguments :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r, Typeable a) => (a -> Sem r b) -> Sem r b #
parserlessHook :: HookProgram b -> HookProgramWithArgParser b #
parserlessSpec :: SpecProgram b -> SpecProgramWithArgParser b #
announceMetaArguments :: SpecProgramArguments -> b -> (SpecProgramArguments, b) #
noMetaArguments :: b -> (SpecProgramArguments, b) #
requiredArgDef :: ToJSON a => a -> SpecProgramArgumentDescription -> SpecProgramArgumentDefinition #
newtype RandomToken #
Constructors
| RandomToken | |
Fields | |
data SQLDialect #
Constructors
| NapkinSQL SimpleSQLParserDialect | |
| PostgreSQL | |
| SimpleSQLParser SimpleSQLParserDialect | |
| RawSQL |
Instances
| FromJSON SQLDialect # | |
Defined in Napkin.Parse.Base | |
| Show SQLDialect # | |
Defined in Napkin.Parse.Base Methods showsPrec :: Int -> SQLDialect -> ShowS # show :: SQLDialect -> String # showList :: [SQLDialect] -> ShowS # | |
| Eq SQLDialect # | |
Defined in Napkin.Parse.Base | |
data AnnotateRead (b :: k) (m :: k1) a #
Instances
| ToDumpItem (b :: k) (AnnotateRead b :: (Type -> Type) -> Type -> Type) # | |
Defined in Napkin.Run.Effects.Interceptors.LogProgram.Types Methods toDumpItem :: forall (r :: EffectRow) x. AnnotateRead b (Sem r) x -> DumpItem b # | |
| GShow (AnnotateRead bk a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateRead Methods gshowsPrec :: Int -> AnnotateRead bk a a0 -> ShowS # | |
| Show (AnnotateRead bk a b) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateRead Methods showsPrec :: Int -> AnnotateRead bk a b -> ShowS # show :: AnnotateRead bk a b -> String # showList :: [AnnotateRead bk a b] -> ShowS # | |
| Eq (AnnotateRead bk a b) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateRead Methods (==) :: AnnotateRead bk a b -> AnnotateRead bk a b -> Bool # (/=) :: AnnotateRead bk a b -> AnnotateRead bk a b -> Bool # | |
data TableAnnotations #
Constructors
| TableAnnotations | |
Fields | |
Instances
data AnnotateWrite (b :: k) (m :: k1) a #
Instances
| ToDumpItem (b :: k) (AnnotateWrite b :: (Type -> Type) -> Type -> Type) # | |
Defined in Napkin.Run.Effects.Interceptors.LogProgram.Types Methods toDumpItem :: forall (r :: EffectRow) x. AnnotateWrite b (Sem r) x -> DumpItem b # | |
| GShow (AnnotateWrite bk a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateWrite Methods gshowsPrec :: Int -> AnnotateWrite bk a a0 -> ShowS # | |
| Show (AnnotateWrite bk a b) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateWrite Methods showsPrec :: Int -> AnnotateWrite bk a b -> ShowS # show :: AnnotateWrite bk a b -> String # showList :: [AnnotateWrite bk a b] -> ShowS # | |
| Eq (AnnotateWrite bk a b) # | |
Defined in Napkin.Run.Effects.Languages.AnnotateWrite Methods (==) :: AnnotateWrite bk a b -> AnnotateWrite bk a b -> Bool # (/=) :: AnnotateWrite bk a b -> AnnotateWrite bk a b -> Bool # | |
Assertion effects so we can skip past them in dry runs, and optionally throw exceptions or just collect them along the way for final reporting, etc..
data AssertionStatus #
Instances
| ToJSON AssertionStatus # | |||||
Defined in Napkin.Run.Effects.Languages.Assertion Methods toJSON :: AssertionStatus -> Value # toEncoding :: AssertionStatus -> Encoding # toJSONList :: [AssertionStatus] -> Value # toEncodingList :: [AssertionStatus] -> Encoding # omitField :: AssertionStatus -> Bool # | |||||
| Generic AssertionStatus # | |||||
Defined in Napkin.Run.Effects.Languages.Assertion Associated Types
Methods from :: AssertionStatus -> Rep AssertionStatus x # to :: Rep AssertionStatus x -> AssertionStatus # | |||||
| Show AssertionStatus # | |||||
Defined in Napkin.Run.Effects.Languages.Assertion Methods showsPrec :: Int -> AssertionStatus -> ShowS # show :: AssertionStatus -> String # showList :: [AssertionStatus] -> ShowS # | |||||
| Eq AssertionStatus # | |||||
Defined in Napkin.Run.Effects.Languages.Assertion Methods (==) :: AssertionStatus -> AssertionStatus -> Bool # (/=) :: AssertionStatus -> AssertionStatus -> Bool # | |||||
| type Rep AssertionStatus # | |||||
Defined in Napkin.Run.Effects.Languages.Assertion type Rep AssertionStatus = D1 ('MetaData "AssertionStatus" "Napkin.Run.Effects.Languages.Assertion" "napkin-spec-2.0.0-3eiQvLVwprjIPwzzdqIJoX" 'False) (C1 ('MetaCons "Success" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Failure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))) | |||||
Effects that deal with local files
Instances
| CacheableEffect (LoadQuery :: k -> Type -> Type) LoadQueryCacheKey # | |
Defined in Napkin.Run.Effects.Languages.LoadQuery Methods | |
| Eq (LoadQuery m a) # | |
| Ord (LoadQuery m a) # | |
Defined in Napkin.Run.Effects.Languages.LoadQuery Methods compare :: LoadQuery m a -> LoadQuery m a -> Ordering # (<) :: LoadQuery m a -> LoadQuery m a -> Bool # (<=) :: LoadQuery m a -> LoadQuery m a -> Bool # (>) :: LoadQuery m a -> LoadQuery m a -> Bool # (>=) :: LoadQuery m a -> LoadQuery m a -> Bool # | |
newtype LoadQueryError #
Constructors
| LoadQueryError Text |
Instances
| Show LoadQueryError # | |
Defined in Napkin.Run.Effects.Languages.LoadQuery Methods showsPrec :: Int -> LoadQueryError -> ShowS # show :: LoadQueryError -> String # showList :: [LoadQueryError] -> ShowS # | |
| Eq LoadQueryError # | |
Defined in Napkin.Run.Effects.Languages.LoadQuery Methods (==) :: LoadQueryError -> LoadQueryError -> Bool # (/=) :: LoadQueryError -> LoadQueryError -> Bool # | |
data RecreateTable b (m :: k) a #
Instances
| (Show (BackendMaterializedViewMeta b), Show (BackendTableMeta b), Show (BackendViewMeta b)) => GShow (RecreateTable b a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.Recreate Methods gshowsPrec :: Int -> RecreateTable b a a0 -> ShowS # | |
| (Show (BackendMaterializedViewMeta b), Show (BackendTableMeta b), Show (BackendViewMeta b)) => Show (RecreateTable b a c) # | |
Defined in Napkin.Run.Effects.Languages.Recreate Methods showsPrec :: Int -> RecreateTable b a c -> ShowS # show :: RecreateTable b a c -> String # showList :: [RecreateTable b a c] -> ShowS # | |
Instances
| GShow (SqlParse a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.SqlParse Methods gshowsPrec :: Int -> SqlParse a a0 -> ShowS # | |
| CacheableEffect (SqlParse :: k -> Type -> Type) SqlParseCacheKey # | |
Defined in Napkin.Run.Effects.Languages.SqlParse Methods | |
| Show (SqlParse m a) # | |
| Eq (SqlParse m a) # | |
| Ord (SqlParse m a) # | |
Defined in Napkin.Run.Effects.Languages.SqlParse | |
newtype TargetName #
Constructors
| TargetName (Ref Table) |
data SqlRead (b :: k) (m :: k1) a #
Instances
| (IsRenderable Query b, IsRenderable SExp b, IsRenderable Text b) => ToDumpItem (b :: k) (SqlRead b :: (Type -> Type) -> Type -> Type) # | |
| GShow (SqlRead b m :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.SqlRead Methods gshowsPrec :: Int -> SqlRead b m a -> ShowS # | |
| Show (SqlRead b m a) # | |
| Eq (SqlRead b m a) # | |
Instances
| GShow (SqlRender a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.SqlRender Methods gshowsPrec :: Int -> SqlRender a a0 -> ShowS # | |
| CacheableEffect (SqlRender :: k -> Type -> Type) SqlRenderCacheKey # | |
Defined in Napkin.Run.Effects.Languages.SqlRender Methods | |
| Show (SqlRender a b) # | |
| Eq (SqlRender m a) # | |
| Ord (SqlRender m a) # | |
Defined in Napkin.Run.Effects.Languages.SqlRender Methods compare :: SqlRender m a -> SqlRender m a -> Ordering # (<) :: SqlRender m a -> SqlRender m a -> Bool # (<=) :: SqlRender m a -> SqlRender m a -> Bool # (>) :: SqlRender m a -> SqlRender m a -> Bool # (>=) :: SqlRender m a -> SqlRender m a -> Bool # | |
Instances
| Data Cascade # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Cascade -> c Cascade # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Cascade # toConstr :: Cascade -> Constr # dataTypeOf :: Cascade -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Cascade) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cascade) # gmapT :: (forall b. Data b => b -> b) -> Cascade -> Cascade # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cascade -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cascade -> r # gmapQ :: (forall d. Data d => d -> u) -> Cascade -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Cascade -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Cascade -> m Cascade # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Cascade -> m Cascade # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Cascade -> m Cascade # | |||||
| Generic Cascade # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Associated Types
| |||||
| Show Cascade # | |||||
| Eq Cascade # | |||||
| ToHashComponent (b :: k) Cascade # | |||||
Defined in Napkin.Run.Effects.Interceptors.LogProgram.Types Methods toHashComponent :: Cascade -> HashComponent # | |||||
| type Rep Cascade # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite | |||||
data MissingBehavior #
Constructors
| IgnoreMissing | |
| FailMissing |
Instances
| Data MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MissingBehavior -> c MissingBehavior # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MissingBehavior # toConstr :: MissingBehavior -> Constr # dataTypeOf :: MissingBehavior -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MissingBehavior) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MissingBehavior) # gmapT :: (forall b. Data b => b -> b) -> MissingBehavior -> MissingBehavior # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MissingBehavior -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MissingBehavior -> r # gmapQ :: (forall d. Data d => d -> u) -> MissingBehavior -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> MissingBehavior -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> MissingBehavior -> m MissingBehavior # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> MissingBehavior -> m MissingBehavior # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> MissingBehavior -> m MissingBehavior # | |||||
| Generic MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Associated Types
Methods from :: MissingBehavior -> Rep MissingBehavior x # to :: Rep MissingBehavior x -> MissingBehavior # | |||||
| Show MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Methods showsPrec :: Int -> MissingBehavior -> ShowS # show :: MissingBehavior -> String # showList :: [MissingBehavior] -> ShowS # | |||||
| Eq MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite Methods (==) :: MissingBehavior -> MissingBehavior -> Bool # (/=) :: MissingBehavior -> MissingBehavior -> Bool # | |||||
| ToHashComponent (b :: k) MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Interceptors.LogProgram.Types Methods | |||||
| type Rep MissingBehavior # | |||||
Defined in Napkin.Run.Effects.Languages.SqlWrite | |||||
Instances
| (Default (BackendTableMeta b), Default (BackendViewMeta b), Eq (BackendMaterializedViewMeta b), Eq (BackendTableMeta b), Eq (BackendViewMeta b), Eq (YamlBackendMaterializedViewMeta b), IsRenderable Query b, IsRenderable SExp b, IsRenderable Statement b, IsRenderable Text b, IsRenderable UpdateQuery b, MaybeDefault (YamlBackendMaterializedViewMeta b), Show (BackendMaterializedViewMeta b), Show (BackendTableMeta b), Show (BackendViewMeta b), ToHashComponent b (BackendMaterializedViewMeta b), ToHashComponent b (BackendTableMeta b), ToHashComponent b (BackendViewMeta b), Typeable (BackendMaterializedViewMeta b), Typeable (BackendTableMeta b), Typeable (BackendViewMeta b)) => ToDumpItem (b :: Type) (SqlWrite b :: (Type -> Type) -> Type -> Type) # | |
| (Show (BackendMaterializedViewMeta bk), Show (BackendTableMeta bk), Show (BackendViewMeta bk)) => GShow (SqlWrite bk a :: Type -> Type) # | |
Defined in Napkin.Run.Effects.Languages.SqlWrite Methods gshowsPrec :: Int -> SqlWrite bk a a0 -> ShowS # | |
| (Show (BackendMaterializedViewMeta bk), Show (BackendTableMeta bk), Show (BackendViewMeta bk)) => Show (SqlWrite bk a b) # | |
| (Eq (BackendMaterializedViewMeta bk), Eq (BackendTableMeta bk), Eq (BackendViewMeta bk)) => Eq (SqlWrite bk a b) # | |
newtype ExtraDependencies #
Constructors
| ExtraDependencies (Set (Ref Table)) |
Instances
| Default ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods | |||||
| Monoid ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods mappend :: ExtraDependencies -> ExtraDependencies -> ExtraDependencies # mconcat :: [ExtraDependencies] -> ExtraDependencies # | |||||
| Semigroup ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (<>) :: ExtraDependencies -> ExtraDependencies -> ExtraDependencies # sconcat :: NonEmpty ExtraDependencies -> ExtraDependencies # stimes :: Integral b => b -> ExtraDependencies -> ExtraDependencies # | |||||
| IsList ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Associated Types
Methods fromList :: [Item ExtraDependencies] -> ExtraDependencies # fromListN :: Int -> [Item ExtraDependencies] -> ExtraDependencies # toList :: ExtraDependencies -> [Item ExtraDependencies] # | |||||
| Show ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods showsPrec :: Int -> ExtraDependencies -> ShowS # show :: ExtraDependencies -> String # showList :: [ExtraDependencies] -> ShowS # | |||||
| Eq ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (==) :: ExtraDependencies -> ExtraDependencies -> Bool # (/=) :: ExtraDependencies -> ExtraDependencies -> Bool # | |||||
| type Item ExtraDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec | |||||
newtype HiddenArtifacts #
Constructors
| HiddenArtifacts (Set (Ref Table)) |
Instances
| Default HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods def :: HiddenArtifacts # | |||||
| Monoid HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods mappend :: HiddenArtifacts -> HiddenArtifacts -> HiddenArtifacts # mconcat :: [HiddenArtifacts] -> HiddenArtifacts # | |||||
| Semigroup HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (<>) :: HiddenArtifacts -> HiddenArtifacts -> HiddenArtifacts # sconcat :: NonEmpty HiddenArtifacts -> HiddenArtifacts # stimes :: Integral b => b -> HiddenArtifacts -> HiddenArtifacts # | |||||
| IsList HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Associated Types
Methods fromList :: [Item HiddenArtifacts] -> HiddenArtifacts # fromListN :: Int -> [Item HiddenArtifacts] -> HiddenArtifacts # toList :: HiddenArtifacts -> [Item HiddenArtifacts] # | |||||
| Show HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods showsPrec :: Int -> HiddenArtifacts -> ShowS # show :: HiddenArtifacts -> String # showList :: [HiddenArtifacts] -> ShowS # | |||||
| Eq HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (==) :: HiddenArtifacts -> HiddenArtifacts -> Bool # (/=) :: HiddenArtifacts -> HiddenArtifacts -> Bool # | |||||
| type Item HiddenArtifacts # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec | |||||
newtype HiddenDependencies #
Constructors
| HiddenDependencies (Set (Ref Table)) |
Instances
| Default HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods | |||||
| Monoid HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods mempty :: HiddenDependencies # mappend :: HiddenDependencies -> HiddenDependencies -> HiddenDependencies # mconcat :: [HiddenDependencies] -> HiddenDependencies # | |||||
| Semigroup HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (<>) :: HiddenDependencies -> HiddenDependencies -> HiddenDependencies # sconcat :: NonEmpty HiddenDependencies -> HiddenDependencies # stimes :: Integral b => b -> HiddenDependencies -> HiddenDependencies # | |||||
| IsList HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Associated Types
Methods fromList :: [Item HiddenDependencies] -> HiddenDependencies # fromListN :: Int -> [Item HiddenDependencies] -> HiddenDependencies # toList :: HiddenDependencies -> [Item HiddenDependencies] # | |||||
| Show HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods showsPrec :: Int -> HiddenDependencies -> ShowS # show :: HiddenDependencies -> String # showList :: [HiddenDependencies] -> ShowS # | |||||
| Eq HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (==) :: HiddenDependencies -> HiddenDependencies -> Bool # (/=) :: HiddenDependencies -> HiddenDependencies -> Bool # | |||||
| type Item HiddenDependencies # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec | |||||
newtype MetaArguments #
Constructors
| MetaArguments | |
Fields | |
Instances
| Monoid MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods mempty :: MetaArguments # mappend :: MetaArguments -> MetaArguments -> MetaArguments # mconcat :: [MetaArguments] -> MetaArguments # | |||||
| Semigroup MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (<>) :: MetaArguments -> MetaArguments -> MetaArguments # sconcat :: NonEmpty MetaArguments -> MetaArguments # stimes :: Integral b => b -> MetaArguments -> MetaArguments # | |||||
| IsList MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Associated Types
Methods fromList :: [Item MetaArguments] -> MetaArguments # fromListN :: Int -> [Item MetaArguments] -> MetaArguments # toList :: MetaArguments -> [Item MetaArguments] # | |||||
| Show MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods showsPrec :: Int -> MetaArguments -> ShowS # show :: MetaArguments -> String # showList :: [MetaArguments] -> ShowS # | |||||
| Eq MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (==) :: MetaArguments -> MetaArguments -> Bool # (/=) :: MetaArguments -> MetaArguments -> Bool # | |||||
| type Item MetaArguments # | |||||
Defined in Napkin.Run.Effects.Languages.TableSpec | |||||
newtype TableMemos #
Constructors
| TableMemos (Map SpecTableName TableMemo) |
Instances
| Monoid TableMemos # | |
Defined in Napkin.Run.Effects.Languages.TableSpec Methods mempty :: TableMemos # mappend :: TableMemos -> TableMemos -> TableMemos # mconcat :: [TableMemos] -> TableMemos # | |
| Semigroup TableMemos # | |
Defined in Napkin.Run.Effects.Languages.TableSpec Methods (<>) :: TableMemos -> TableMemos -> TableMemos # sconcat :: NonEmpty TableMemos -> TableMemos # stimes :: Integral b => b -> TableMemos -> TableMemos # | |
| ToDumpItem (b :: k) (Reader TableMemos) # | |
Defined in Napkin.Run.Effects.Interceptors.LogProgram.Types Methods toDumpItem :: forall (r :: EffectRow) x. Reader TableMemos (Sem r) x -> DumpItem b # | |
type HookProgram b = HookProgram' b () #
Hooks have different capabilities than specs
type HookProgram' b a = Sem (TableHookProgramEffects b) a #
Programs packaged up for use in Specs. Intended for use in providing introspectable CustomCreate actions in specs.
newtype HookProgramWithArgParser b #
Constructors
| HookProgramWithArgParser (Object -> Parser (SpecProgramArguments, HookProgram b)) |
type IOGlobalHookProgram b = IOGlobalHookProgram' b () #
type IOGlobalHookProgram' b a = Sem (IOGlobalHookProgramEffects b) a #
type PureGlobalHookProgram b = PureGlobalHookProgram' b () #
type PureGlobalHookProgram' b a = Sem (PureGlobalHookProgramEffects b) a #
class RunBackendEffect b where #
Minimal complete definition
runBackendEffectReal, runBackendEffectFake, interceptBackendEffectDiscoverDependencies, interceptBackendEffectApplyQueryTransformer
Methods
runBackendEffectReal :: forall (m :: Type -> Type) (r :: EffectRow) a. (LocalQueryStats b m, Members '[FatalError :: (Type -> Type) -> Type -> Type, Embed m] r, MonadNapkin b m, SqlIO m) => BackendConn b -> Sem (BackendSpecificEffect b ': r) a -> Sem r a #
runBackendEffectFake :: forall (r :: EffectRow) a. Members '[Reader HiddenDependencies, State IState :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type] r => Sem (BackendSpecificEffect b ': r) a -> Sem r a #
interceptBackendEffectDiscoverDependencies :: forall (r :: EffectRow) a. Members '[Input (Transformed HiddenDependencies) :: (Type -> Type) -> Type -> Type, Output Dependencies :: (Type -> Type) -> Type -> Type, BackendSpecificEffect b] r => Sem r a -> Sem r a #
interceptBackendEffectApplyQueryTransformer :: forall (r :: EffectRow) a. Members '[Output ExtraDependencies :: (Type -> Type) -> Type -> Type, Reader QueryTransformer, BackendSpecificEffect b] r => Sem r a -> Sem r a #
backendDependencyValidator :: Proxy b -> [(SpecDependency -> Ref Table) -> SpecsDepsTables -> [WithSpecTable Text]] #
default backendDependencyValidator :: Proxy b -> [(SpecDependency -> Ref Table) -> SpecsDepsTables -> [WithSpecTable Text]] #
type SpecProgram b = SpecProgram' b () #
type SpecProgram' b a = Sem (SpecProgramEffects b) a #
newtype SpecProgramWithArgParser b #
Constructors
| SpecProgramWithArgParser (Object -> Parser (SpecProgramArguments, SpecProgram b)) |
newtype SpecPreprocessorWithArgParser b #
Constructors
| SpecPreprocessorWithArgParser (Object -> Parser (SpecProgramArguments, SpecPreprocessor b)) |
type family Members (es :: [Effect]) (r :: EffectRow) where ... #
Makes constraints of functions that use multiple effects shorter by
translating single list of effects into multiple Member constraints:
foo ::Members'[OutputInt ,OutputBool ,StateString ] r =>Semr ()
translates into:
foo :: (Member(OutputInt) r ,Member(OutputBool) r ,Member(StateString) r ) =>Semr ()
Since: polysemy-0.1.2.0
The Sem monad handles computations of arbitrary extensible effects.
A value of type Sem r describes a program with the capabilities of
r. For best results, r should always be kept polymorphic, but you can
add capabilities via the Member constraint.
The value of the Sem monad is that it allows you to write programs
against a set of effects without a predefined meaning, and provide that
meaning later. For example, unlike with mtl, you can decide to interpret an
Error effect traditionally as an Either, or instead
as (a significantly faster) IO Exception. These
interpretations (and others that you might add) may be used interchangeably
without needing to write any newtypes or Monad instances. The only
change needed to swap interpretations is to change a call from
runError to errorToIOFinal.
The effect stack r can contain arbitrary other monads inside of it. These
monads are lifted into effects via the Embed effect. Monadic values can be
lifted into a Sem via embed.
Higher-order actions of another monad can be lifted into higher-order actions
of Sem via the Final effect, which is more powerful
than Embed, but also less flexible to interpret.
A Sem can be interpreted as a pure value (via run) or as any
traditional Monad (via runM or runFinal).
Each effect E comes equipped with some interpreters of the form:
runE ::Sem(E ': r) a ->Semr a
which is responsible for removing the effect E from the effect stack. It
is the order in which you call the interpreters that determines the
monomorphic representation of the r parameter.
Order of interpreters can be important - it determines behaviour of effects that manipulate state or change control flow. For example, when interpreting this action:
>>>:{example :: Members '[State String, Error String] r => Sem r String example = do put "start" let throwing, catching :: Members '[State String, Error String] r => Sem r String throwing = do modify (++"-throw") throw "error" get catching = do modify (++"-catch") get catch @String throwing (\ _ -> catching) :}
when handling Error first, state is preserved after error
occurs:
>>>:{example & runError & fmap (either id id) & evalState "" & runM & (print =<<) :} "start-throw-catch"
while handling State first discards state in such cases:
>>>:{example & evalState "" & runError & fmap (either id id) & runM & (print =<<) :} "start-catch"
A good rule of thumb is to handle effects which should have "global" behaviour over other effects later in the chain.
After all of your effects are handled, you'll be left with either
a , a Sem '[] a, or a Sem '[ Embed m ] a
value, which can be consumed respectively by Sem '[ Final m ] arun, runM, and
runFinal.
Examples
As an example of keeping r polymorphic, we can consider the type
Member(StateString) r =>Semr ()
to be a program with access to
get::Semr Stringput:: String ->Semr ()
methods.
By also adding a
Member(ErrorBool) r
constraint on r, we gain access to the
throw:: Bool ->Semr acatch::Semr a -> (Bool ->Semr a) ->Semr a
functions as well.
In this sense, a constraint is
analogous to mtl's Member (State s) r and should
be thought of as such. However, unlike mtl, a MonadState s mSem monad may have
an arbitrary number of the same effect.
For example, we can write a Sem program which can output either
Ints or Bools:
foo :: (Member(OutputInt) r ,Member(OutputBool) r ) =>Semr () foo = dooutput@Int 5outputTrue
Notice that we must use -XTypeApplications to specify that we'd like to
use the (Output Int) effect.
Since: polysemy-0.1.2.0
Instances
| Member NonDet r => Alternative (Sem r) # | |
| Applicative (Sem f) # | |
| Functor (Sem f) # | |
| Monad (Sem f) # | |
| Member NonDet r => MonadPlus (Sem r) # | Since: polysemy-0.2.1.0 |
| Member (Fail :: (Type -> Type) -> Type -> Type) r => MonadFail (Sem r) # | Since: polysemy-1.1.0.0 |
Defined in Polysemy.Internal | |
| Member Fixpoint r => MonadFix (Sem r) # | |
Defined in Polysemy.Internal | |
| Member (Embed IO) r => MonadIO (Sem r) # | This instance will only lift |
Defined in Polysemy.Internal | |
| Monoid a => Monoid (Sem f a) # | Since: polysemy-1.6.0.0 |
| Semigroup a => Semigroup (Sem f a) # | Since: polysemy-1.6.0.0 |
class Member (t :: Effect) (r :: EffectRow) #
This class indicates that an effect must be present in the caller's stack. It is the main mechanism by which a program defines its effect dependencies.
Minimal complete definition
membership'
Instances
| Member t z => Member t (_1 ': z) # | |
Defined in Polysemy.Internal.Union Methods membership' :: ElemOf t (_1 ': z) | |
| Member t (t ': z) # | |
Defined in Polysemy.Internal.Union Methods membership' :: ElemOf t (t ': z) | |