napkin-api-2.0.0
Safe HaskellNone
LanguageGHC2024

Napkin.Run.Effects.Programs

Synopsis

Documentation

splitIfUnionBy :: forall b (r :: EffectRow) a. Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, RecreateTable b :: (Type -> Type) -> Type -> Type] r => Int -> Sem r a -> Sem r a #

Intercept CreateTableAs calls and try to split queries into CreateTableAs + multiple InsertInto when query contains unions

incrementalInsertByPK #

Arguments

:: forall b (r :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, Time :: (Type -> Type) -> Type -> Type, Reader TargetName, Reader HiddenDependencies, RecreateTable b :: (Type -> Type) -> Type -> Type] r 
=> (Day -> Sem r Query)

Query with cutoff

-> SExp

Primary key column

-> Day

Starting timestamp value in fresh create

-> Integer

Num days to look back in each update

-> BackendTableMeta b 
-> Sem r () 

incrementalByTimeRawSql #

Arguments

:: forall b (r :: EffectRow). (Default (BackendTableMeta b), HasBackendSchemaField b, Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, Time :: (Type -> Type) -> Type -> Type, Reader TargetName, Reader HiddenDependencies, Reader HiddenArtifacts, RecreateTable b :: (Type -> Type) -> Type -> Type, SqlParse :: (Type -> Type) -> Type -> Type, SqlRender :: (Type -> Type) -> Type -> Type, LoadQuery :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Output ExtraDependencies :: (Type -> Type) -> Type -> Type, Input TemporaryTableName :: (Type -> Type) -> Type -> Type, Input MetaArguments :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) 
=> FilePath

Local SQL file

-> SqlTemplateVariables

Any additional variables you want to bind

-> [ColumnName]

Names of columns to keep on schema change

-> SExp

Timestamp column in the destination table

-> Day

Start time when creating table fresh

-> Integer

N days to go back

-> BackendTableMeta b 
-> Sem r () 

incrementalByTimeCreateAction #

Arguments

:: forall b (r :: EffectRow). (Default (BackendTableMeta b), HasBackendSchemaField b, Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, Time :: (Type -> Type) -> Type -> Type, Input TemporaryTableName :: (Type -> Type) -> Type -> Type, Reader TargetName, Input MetaArguments :: (Type -> Type) -> Type -> Type, Reader HiddenDependencies, Reader HiddenArtifacts, RecreateTable b :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) 
=> [ColumnName]

Names of columns to keep on schema change

-> (Day -> Sem r Query)

Table query

-> Day

Start time when creating table fresh

-> (Day -> SExp)

Cutoff SExp

-> Integer

N days to go back

-> BackendTableMeta b 
-> Sem r () 

loadSqlFileWithCutoff :: forall (r :: EffectRow). Members '[SqlParse :: (Type -> Type) -> Type -> Type, SqlRender :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, LoadQuery :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r => FilePath -> SqlTemplateVariables -> Day -> Sem r Query #

copyData :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => CopySource -> CopyDestination -> Sem r () #

copyData' :: forall b (r :: EffectRow). Member (SqlWrite b :: (Type -> Type) -> Type -> Type) r => InsertColumnsList -> CopySource -> CopyDestination -> Sem r () #

longToWideAuto #

Arguments

:: forall b (r :: EffectRow). Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, Reader HiddenDependencies, Reader TargetName, RecreateTable b :: (Type -> Type) -> Type -> Type] r 
=> Ref Table

the long table from which this table will be derived- make sure it is also listed in the dependencies

-> (SExp -> SExp)

Aggregate function to use

-> [Alias SExp]

the key columns which will remain in the resultant wide version as-is

-> SExp

the column name in the long table which will be split into multiple columns in the wide version

-> SExp

the column in the long table which will be emitted from matching on the new columns

-> (Value -> Ref SExp)

a function to generate column names from the values found in the database

-> SpecTarget b

standard table options

-> Sem r () 

combineTables #

Arguments

:: forall b (r :: EffectRow). (HasBackendSchemaField b, Members '[SqlWrite b :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, Output ExtraDependencies :: (Type -> Type) -> Type -> Type, Reader TargetName, RecreateTable b :: (Type -> Type) -> Type -> Type, Input TemporaryTableName :: (Type -> Type) -> Type -> Type, Reader QueryTransformer] r) 
=> SpecTarget b 
-> (Query -> Query)

Any final optional query modification

-> [Relation]

List of sources to combine

-> Sem r () 

external :: forall {k} (b :: k) (r :: EffectRow). Members '[FatalError :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, External :: (Type -> Type) -> Type -> Type, Reader TargetName, Output ExtraDependencies :: (Type -> Type) -> Type -> Type, Input MetaArguments :: (Type -> Type) -> Type -> Type] r => Set (Ref Table) -> ExternalCommand -> Sem r () #

recreateTarget :: forall b (r :: EffectRow). Members '[RecreateTable b :: (Type -> Type) -> Type -> Type, Reader TargetName, SqlWrite b :: (Type -> Type) -> Type -> Type] r => SpecTarget b -> NonEmpty Query -> Sem r () #

pattern IncrementalReset :: (Eq a, IsString a) => a #

enforceSchema :: forall b (r :: EffectRow). (Eq (BackendSchemaField b), HasBackendSchemaField b, Members '[Input TemporaryTableName :: (Type -> Type) -> Type -> Type, SqlRead b :: (Type -> Type) -> Type -> Type, SqlWrite b :: (Type -> Type) -> Type -> Type, FatalError :: (Type -> Type) -> Type -> Type, Log :: (Type -> Type) -> Type -> Type] r) => SchemaMigrationOptions -> Ref Table -> [BackendSchemaField b] -> Sem r () #

data SchemaMigrationOptions #

Instances

Instances details
Generic SchemaMigrationOptions # 
Instance details

Defined in Napkin.Run.Effects.Programs

Associated Types

type Rep SchemaMigrationOptions 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep SchemaMigrationOptions = D1 ('MetaData "SchemaMigrationOptions" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "SchemaMigrationOptions" 'PrefixI 'True) (S1 ('MetaSel ('Just "dropColumnsPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ColumnPolicy DroppedColumnPolicy)) :*: S1 ('MetaSel ('Just "addColumnsPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ColumnPolicy AddedColumnPolicy))))
Show SchemaMigrationOptions # 
Instance details

Defined in Napkin.Run.Effects.Programs

Eq SchemaMigrationOptions # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep SchemaMigrationOptions # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep SchemaMigrationOptions = D1 ('MetaData "SchemaMigrationOptions" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "SchemaMigrationOptions" 'PrefixI 'True) (S1 ('MetaSel ('Just "dropColumnsPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ColumnPolicy DroppedColumnPolicy)) :*: S1 ('MetaSel ('Just "addColumnsPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ColumnPolicy AddedColumnPolicy))))

data AddedColumnPolicy #

Constructors

ForbidAdding 
AllowAdding 

Instances

Instances details
Bounded AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Enum AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Generic AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Associated Types

type Rep AddedColumnPolicy 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep AddedColumnPolicy = D1 ('MetaData "AddedColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ForbidAdding" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowAdding" 'PrefixI 'False) (U1 :: Type -> Type))
Show AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Eq AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep AddedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep AddedColumnPolicy = D1 ('MetaData "AddedColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ForbidAdding" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowAdding" 'PrefixI 'False) (U1 :: Type -> Type))

data DroppedColumnPolicy #

Instances

Instances details
Bounded DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Enum DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Generic DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Associated Types

type Rep DroppedColumnPolicy 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep DroppedColumnPolicy = D1 ('MetaData "DroppedColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ForbidDropping" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KeepDropped" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowDropping" 'PrefixI 'False) (U1 :: Type -> Type)))
Show DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

Eq DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep DroppedColumnPolicy # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep DroppedColumnPolicy = D1 ('MetaData "DroppedColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ForbidDropping" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KeepDropped" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AllowDropping" 'PrefixI 'False) (U1 :: Type -> Type)))

data ColumnPolicy a #

Constructors

ColumnPolicy 

Instances

Instances details
Generic (ColumnPolicy a) # 
Instance details

Defined in Napkin.Run.Effects.Programs

Associated Types

type Rep (ColumnPolicy a) 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep (ColumnPolicy a) = D1 ('MetaData "ColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ColumnPolicy" 'PrefixI 'True) (S1 ('MetaSel ('Just "defaultPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "columnOverrides") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Text a))))

Methods

from :: ColumnPolicy a -> Rep (ColumnPolicy a) x #

to :: Rep (ColumnPolicy a) x -> ColumnPolicy a #

Show a => Show (ColumnPolicy a) # 
Instance details

Defined in Napkin.Run.Effects.Programs

Eq a => Eq (ColumnPolicy a) # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep (ColumnPolicy a) # 
Instance details

Defined in Napkin.Run.Effects.Programs

type Rep (ColumnPolicy a) = D1 ('MetaData "ColumnPolicy" "Napkin.Run.Effects.Programs" "napkin-api-2.0.0-GKif1wVpGtsJEy6X9JqPgn" 'False) (C1 ('MetaCons "ColumnPolicy" 'PrefixI 'True) (S1 ('MetaSel ('Just "defaultPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "columnOverrides") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Text a))))

pattern AddColumnsList :: (Eq a, IsString a) => a #

pattern AddColumnsPolicy :: (Eq a, IsString a) => a #

pattern DropColumnsList :: (Eq a, IsString a) => a #

pattern DropColumnsPolicy :: (Eq a, IsString a) => a #