-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Beam driver for SQLite
--
-- Beam driver for the SQLite embedded database. See here
-- for more information
@package beam-sqlite
@version 0.5.1.2
-- | SQLite implementations of the Beam SQL syntax classes
--
-- The SQLite command syntax is implemented by
-- SQLiteCommandSyntax.
module Database.Beam.Sqlite.Syntax
-- | The syntax for SQLite is stored as a Builder along with a list
-- of data that hasn't been serialized yet.
--
-- The first argument is a function that receives a builder for
-- SQLData and returns the concrete syntax to embed into the
-- query. For queries sent to the backend, this is simply a function that
-- returns "?". Thus, the syntax sent to the backend includes
-- proper placeholders. The list of data is sent to the SQLite library
-- for proper escaping.
--
-- When the syntax is being serialized for display (for use in beam
-- migrate for example), the data builder attempts to properly format and
-- escape the data. This returns syntax suitable for inclusion in
-- scripts. In this case, the value list is ignored.
data SqliteSyntax
SqliteSyntax :: ((SQLData -> Builder) -> Builder) -> DList SQLData -> SqliteSyntax
-- | A SQLite command. INSERT is special cased to handle AUTO
-- INCREMENT columns. The fromSqliteCommand function will
-- take an SqliteCommandSyntax and convert it into the correct
-- SqliteSyntax.
data SqliteCommandSyntax
SqliteCommandSyntax :: SqliteSyntax -> SqliteCommandSyntax
SqliteCommandInsert :: SqliteInsertSyntax -> SqliteCommandSyntax
-- | SQLite SELECT syntax
newtype SqliteSelectSyntax
SqliteSelectSyntax :: SqliteSyntax -> SqliteSelectSyntax
[fromSqliteSelect] :: SqliteSelectSyntax -> SqliteSyntax
-- | SQLite INSERT syntax. This doesn't directly wrap
-- SqliteSyntax because we need to do some processing on
-- INSERT statements to deal with AUTO INCREMENT
-- columns. Use formatSqliteInsert to turn
-- SqliteInsertSyntax into SqliteSyntax.
data SqliteInsertSyntax
SqliteInsertSyntax :: !SqliteTableNameSyntax -> [Text] -> !SqliteInsertValuesSyntax -> !Maybe SqliteOnConflictSyntax -> SqliteInsertSyntax
[sqliteInsertTable] :: SqliteInsertSyntax -> !SqliteTableNameSyntax
[sqliteInsertFields] :: SqliteInsertSyntax -> [Text]
[sqliteInsertValues] :: SqliteInsertSyntax -> !SqliteInsertValuesSyntax
[sqliteInsertOnConflict] :: SqliteInsertSyntax -> !Maybe SqliteOnConflictSyntax
-- | SQLite UPDATE syntax
newtype SqliteUpdateSyntax
SqliteUpdateSyntax :: SqliteSyntax -> SqliteUpdateSyntax
[fromSqliteUpdate] :: SqliteUpdateSyntax -> SqliteSyntax
-- | SQLite DELETE syntax
newtype SqliteDeleteSyntax
SqliteDeleteSyntax :: SqliteSyntax -> SqliteDeleteSyntax
[fromSqliteDelete] :: SqliteDeleteSyntax -> SqliteSyntax
-- | SQLite ON CONFLICT syntax
newtype SqliteOnConflictSyntax
SqliteOnConflictSyntax :: SqliteSyntax -> SqliteOnConflictSyntax
[fromSqliteOnConflict] :: SqliteOnConflictSyntax -> SqliteSyntax
-- | SQLite VALUES clause in INSERT. Expressions need to
-- be handled explicitly in order to deal with DEFAULT values
-- and AUTO INCREMENT columns.
data SqliteInsertValuesSyntax
SqliteInsertExpressions :: [[SqliteExpressionSyntax]] -> SqliteInsertValuesSyntax
SqliteInsertFromSql :: SqliteSelectSyntax -> SqliteInsertValuesSyntax
-- | SQLite syntax for column schemas in CREATE TABLE or ALTER
-- COLUMN ... ADD COLUMN statements
data SqliteColumnSchemaSyntax
SqliteColumnSchemaSyntax :: SqliteSyntax -> Bool -> SqliteColumnSchemaSyntax
[fromSqliteColumnSchema] :: SqliteColumnSchemaSyntax -> SqliteSyntax
[sqliteIsSerialColumn] :: SqliteColumnSchemaSyntax -> Bool
-- | Implements beam SQL expression syntaxes
data SqliteExpressionSyntax
SqliteExpressionSyntax :: SqliteSyntax -> SqliteExpressionSyntax
SqliteExpressionDefault :: SqliteExpressionSyntax
-- | SQLite syntax for values that can be embedded in SqliteSyntax
newtype SqliteValueSyntax
SqliteValueSyntax :: SqliteSyntax -> SqliteValueSyntax
[fromSqliteValue] :: SqliteValueSyntax -> SqliteSyntax
newtype SqliteTableNameSyntax
SqliteTableNameSyntax :: SqliteSyntax -> SqliteTableNameSyntax
[fromSqliteTableName] :: SqliteTableNameSyntax -> SqliteSyntax
newtype SqliteFieldNameSyntax
SqliteFieldNameSyntax :: SqliteSyntax -> SqliteFieldNameSyntax
[fromSqliteFieldNameSyntax] :: SqliteFieldNameSyntax -> SqliteSyntax
newtype SqliteAggregationSetQuantifierSyntax
SqliteAggregationSetQuantifierSyntax :: SqliteSyntax -> SqliteAggregationSetQuantifierSyntax
[fromSqliteAggregationSetQuantifier] :: SqliteAggregationSetQuantifierSyntax -> SqliteSyntax
fromSqliteExpression :: SqliteExpressionSyntax -> SqliteSyntax
-- | SQLite syntax that implements IsSql92DataTypeSyntax and a good
-- portion of IsSql99DataTypeSyntax, except for array and row
-- types.
data SqliteDataTypeSyntax
SqliteDataTypeSyntax :: SqliteSyntax -> HsDataType -> BeamSerializedDataType -> Bool -> SqliteDataTypeSyntax
[fromSqliteDataType] :: SqliteDataTypeSyntax -> SqliteSyntax
[sqliteDataTypeToHs] :: SqliteDataTypeSyntax -> HsDataType
[sqliteDataTypeSerialized] :: SqliteDataTypeSyntax -> BeamSerializedDataType
[sqliteDataTypeSerial] :: SqliteDataTypeSyntax -> Bool
sqliteTextType :: SqliteDataTypeSyntax
sqliteBlobType :: SqliteDataTypeSyntax
sqliteBigIntType :: SqliteDataTypeSyntax
sqliteSerialType :: SqliteDataTypeSyntax
-- | Convert a SqliteCommandSyntax into a renderable
-- SqliteSyntax
fromSqliteCommand :: SqliteCommandSyntax -> SqliteSyntax
-- | Format a SQLite INSERT expression for the given table name,
-- fields, and values.
formatSqliteInsert :: SqliteTableNameSyntax -> [Text] -> SqliteInsertValuesSyntax -> SqliteSyntax
-- | Format a SQLite INSERT expression for the given table name,
-- fields, values, and optionally an ON CONFLICT clause.
formatSqliteInsertOnConflict :: SqliteTableNameSyntax -> [Text] -> SqliteInsertValuesSyntax -> Maybe SqliteOnConflictSyntax -> SqliteSyntax
-- | Embed a ByteString directly in the syntax
emit :: ByteString -> SqliteSyntax
-- | Emit a properly escaped value into the syntax
--
-- This causes a literal ? 3
emitValue :: SQLData -> SqliteSyntax
parens :: SqliteSyntax -> SqliteSyntax
commas :: [SqliteSyntax] -> SqliteSyntax
quotedIdentifier :: Text -> SqliteSyntax
-- | A best effort attempt to implement the escaping rules of SQLite. This
-- is never used to escape data sent to the database; only for emitting
-- scripts or displaying syntax to the user.
sqliteEscape :: Text -> Text
-- | Convert the first argument of SQLiteSyntax to a
-- ByteString Builder, where all the data has been replaced
-- by "?" placeholders.
withPlaceholders :: ((SQLData -> Builder) -> Builder) -> Builder
-- | Render a SqliteSyntax as a lazy ByteString, for purposes
-- of displaying to a user. Embedded SQLData is directly embedded
-- into the concrete syntax, with a best effort made to escape strings.
sqliteRenderSyntaxScript :: SqliteSyntax -> ByteString
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteData
instance GHC.Generics.Generic Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance GHC.Base.Semigroup (Database.Beam.Query.CustomSQL.CustomSqlSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax)
instance GHC.Base.Monoid (Database.Beam.Query.CustomSQL.CustomSqlSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax)
instance GHC.Generics.Generic Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance GHC.Generics.Generic Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92Syntax Database.Beam.Sqlite.Syntax.SqliteCommandSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92DdlCommandSyntax Database.Beam.Sqlite.Syntax.SqliteCommandSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92InsertSyntax Database.Beam.Sqlite.Syntax.SqliteInsertSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92TableNameSyntax Database.Beam.Sqlite.Syntax.SqliteTableNameSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92DropTableSyntax Database.Beam.Sqlite.Syntax.SqliteDropTableSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92AlterTableSyntax Database.Beam.Sqlite.Syntax.SqliteAlterTableSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92CreateTableSyntax Database.Beam.Sqlite.Syntax.SqliteCreateTableSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92TableSourceSyntax Database.Beam.Sqlite.Syntax.SqliteTableSourceSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92UpdateSyntax Database.Beam.Sqlite.Syntax.SqliteUpdateSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92DeleteSyntax Database.Beam.Sqlite.Syntax.SqliteDeleteSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92AlterTableActionSyntax Database.Beam.Sqlite.Syntax.SqliteAlterTableActionSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92AlterColumnActionSyntax Database.Beam.Sqlite.Syntax.SqliteAlterColumnActionSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92ColumnConstraintSyntax Database.Beam.Sqlite.Syntax.SqliteColumnConstraintSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92ReferentialActionSyntax Database.Beam.Sqlite.Syntax.SqliteReferentialActionSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92MatchTypeSyntax Database.Beam.Sqlite.Syntax.SqliteMatchTypeSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92TableConstraintSyntax Database.Beam.Sqlite.Syntax.SqliteTableConstraintSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92ColumnConstraintDefinitionSyntax Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance Database.Beam.Backend.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92ColumnSchemaSyntax Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Migrate.SQL.SQL92.Sql92SerializableConstraintDefinitionSyntax Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Backend.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92DataTypeSyntax Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Backend.SQL.SQL99.IsSql99DataTypeSyntax Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Backend.SQL.SQL2003.IsSql2008BigIntDataTypeSyntax Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Migrate.SQL.SQL92.Sql92SerializableDataTypeSyntax Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92ExpressionSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Database.Beam.Migrate.Checks.HasDataTypeCreatedCheck Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Backend.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92InsertValuesSyntax Database.Beam.Sqlite.Syntax.SqliteInsertValuesSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92FieldNameSyntax Database.Beam.Sqlite.Syntax.SqliteFieldNameSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92FromSyntax Database.Beam.Sqlite.Syntax.SqliteFromSyntax
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Int.Int8
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Int.Int16
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Int.Int32
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Int.Int64
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Word.Word8
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Word.Word16
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Word.Word32
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Word.Word64
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Scientific.Scientific
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Float
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Double
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Bool
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Database.Beam.Backend.SQL.Types.SqlNull
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Base.String
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Text.Internal.Text
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Text.Internal.Lazy.Text
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax x => Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax (GHC.Maybe.Maybe x)
instance (TypeError ...) => Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Int
instance (TypeError ...) => Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Word
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.ByteString.Internal.ByteString
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.Time.Calendar.Days.Day
instance Database.Beam.Backend.SQL.SQL92.IsSql92SelectSyntax Database.Beam.Sqlite.Syntax.SqliteSelectSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92OrderingSyntax Database.Beam.Sqlite.Syntax.SqliteOrderingSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92SelectTableSyntax Database.Beam.Sqlite.Syntax.SqliteSelectTableSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92GroupingSyntax Database.Beam.Sqlite.Syntax.SqliteGroupingSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92ProjectionSyntax Database.Beam.Sqlite.Syntax.SqliteProjectionSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92AggregationExpressionSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92AggregationSetQuantifierSyntax Database.Beam.Sqlite.Syntax.SqliteAggregationSetQuantifierSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92QuantifierSyntax Database.Beam.Sqlite.Syntax.SqliteComparisonQuantifierSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Database.Beam.Query.CustomSQL.IsCustomSqlSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Data.String.IsString (Database.Beam.Query.CustomSQL.CustomSqlSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax)
instance Database.Beam.Backend.SQL.SQL99.IsSql99ConcatExpressionSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Database.Beam.Backend.SQL.SQL99.IsSql99FunctionExpressionSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteSyntax
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteData
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteSyntax
instance Database.Beam.Backend.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteSyntax
instance GHC.Base.Semigroup Database.Beam.Sqlite.Syntax.SqliteSyntax
instance GHC.Base.Monoid Database.Beam.Sqlite.Syntax.SqliteSyntax
instance GHC.Classes.Eq Database.Beam.Sqlite.Syntax.SqliteSyntax
module Database.Beam.Sqlite.Connection
-- | The SQLite backend. Used to parameterize MonadBeam and
-- FromBackendRow to provide support for SQLite databases. See the
-- documentation for MonadBeam and the user guide for more
-- information on how to use this backend.
data Sqlite
Sqlite :: Sqlite
-- | MonadBeam instance inside which SQLite queries are run. See the
-- user guide for more information
newtype SqliteM a
SqliteM :: ReaderT (String -> IO (), Connection) IO a -> SqliteM a
-- | Run an IO action with access to a SQLite connection and a debug
-- logging function, called or each query submitted on the connection.
[runSqliteM] :: SqliteM a -> ReaderT (String -> IO (), Connection) IO a
-- | URI syntax for use with withDbConnection. See documentation for
-- BeamURIOpeners for more information.
sqliteUriSyntax :: c Sqlite Connection SqliteM -> BeamURIOpeners c
runBeamSqlite :: Connection -> SqliteM a -> IO a
runBeamSqliteDebug :: (String -> IO ()) -> Connection -> SqliteM a -> IO a
-- | Build a SqliteInsertReturning representing inserting the
-- given values into the given table. Use runInsertReturningList
insertReturning :: Beamable table => DatabaseEntity Sqlite db (TableEntity table) -> SqlInsertValues Sqlite (table (QExpr Sqlite s)) -> SqlInsert Sqlite table
-- | Runs a SqliteInsertReturning statement and returns a result
-- for each inserted row.
runInsertReturningList :: (Beamable table, FromBackendRow Sqlite (table Identity)) => SqlInsert Sqlite table -> SqliteM [table Identity]
instance Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO Database.Beam.Sqlite.Connection.SqliteM
instance Control.Monad.Base.MonadBase GHC.Types.IO Database.Beam.Sqlite.Connection.SqliteM
instance Control.Monad.Fail.MonadFail Database.Beam.Sqlite.Connection.SqliteM
instance Control.Monad.IO.Class.MonadIO Database.Beam.Sqlite.Connection.SqliteM
instance GHC.Base.Applicative Database.Beam.Sqlite.Connection.SqliteM
instance GHC.Base.Functor Database.Beam.Sqlite.Connection.SqliteM
instance GHC.Base.Monad Database.Beam.Sqlite.Connection.SqliteM
instance Database.Beam.Sqlite.Connection.IsSqliteSerialIntegerType GHC.Int.Int32
instance Database.Beam.Sqlite.Connection.IsSqliteSerialIntegerType GHC.Int.Int64
instance (TypeError ...) => Database.Beam.Sqlite.Connection.IsSqliteSerialIntegerType GHC.Types.Int
instance Database.Beam.Sqlite.Connection.IsSqliteSerialIntegerType a => Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Connection.Sqlite (Database.Beam.Backend.SQL.Types.SqlSerial a)
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite a => Database.SQLite.Simple.FromRow.FromRow (Database.Beam.Sqlite.Connection.BeamSqliteRow a)
instance Database.Beam.Backend.SQL.MonadBeam Database.Beam.Sqlite.Connection.Sqlite Database.Beam.Sqlite.Connection.SqliteM
instance Database.SQLite.Simple.ToRow.ToRow Database.Beam.Sqlite.Connection.BeamSqliteParams
instance Database.Beam.Backend.SQL.BeamExtensions.MonadBeamInsertReturning Database.Beam.Sqlite.Connection.Sqlite Database.Beam.Sqlite.Connection.SqliteM
instance Database.Beam.Migrate.SQL.Tables.FieldReturnType 'GHC.Types.True 'GHC.Types.False Database.Beam.Sqlite.Connection.Sqlite resTy a => Database.Beam.Migrate.SQL.Tables.FieldReturnType 'GHC.Types.False 'GHC.Types.False Database.Beam.Sqlite.Connection.Sqlite resTy (Database.Beam.Sqlite.Connection.SqliteHasDefault -> a)
instance Database.Beam.Migrate.SQL.BeamExtensions.BeamSqlBackendHasSerial Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Scientific.Scientific
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Database.Beam.Sqlite.Connection.SqliteScientific
instance Database.SQLite.Simple.FromField.FromField Database.Beam.Sqlite.Connection.SqliteScientific
instance Database.Beam.Backend.Types.BeamBackend Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Query.Types.HasQBuilder Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Query.Ord.HasSqlInTable Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Backend.SQL.BeamSqlBackendIsString Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Text
instance Database.Beam.Backend.SQL.BeamSqlBackendIsString Database.Beam.Sqlite.Connection.Sqlite GHC.Base.String
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Bool
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Double
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Float
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int8
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int16
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int32
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int64
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Integer.Type.Integer
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word8
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word16
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word32
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word64
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Text
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Lazy.Text
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.Calendar.Days.Day
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Database.SQLite.Simple.Types.Null
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Char
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Database.Beam.Backend.SQL.Types.SqlNull
instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance (TypeError ...) => Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Int
instance (TypeError ...) => Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Word
instance Database.Beam.Backend.SQL.BeamSqlBackend Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Migrate.SQL.Types.BeamMigrateOnlySqlBackend Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int8
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int8
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int16
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int16
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int32
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int32
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int64
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int64
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word8
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word8
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word16
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word16
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word32
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word32
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word64
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word64
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Double
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Double
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Float
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Float
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Bool
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Bool
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Base.String
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Base.String
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Text
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Text
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Lazy.Text
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Lazy.Text
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Char
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Char
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Integer.Type.Integer
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Integer.Type.Integer
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Scientific.Scientific
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.Scientific.Scientific
instance (TypeError ...) => Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Int
instance (TypeError ...) => Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Int
instance (TypeError ...) => Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Word
instance (TypeError ...) => Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Word
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Backend.SQL.BeamExtensions.BeamHasInsertOnConflict Database.Beam.Sqlite.Connection.Sqlite
-- | Migrations support for SQLite databases
module Database.Beam.Sqlite.Migrate
-- | Top-level BeamMigrationBackend loaded dynamically by the
-- beam-migrate CLI tool.
migrationBackend :: BeamMigrationBackend Sqlite SqliteM
-- | A SQLite command. INSERT is special cased to handle AUTO
-- INCREMENT columns. The fromSqliteCommand function will
-- take an SqliteCommandSyntax and convert it into the correct
-- SqliteSyntax.
data SqliteCommandSyntax
-- | Render a series of MigrationSteps in the
-- SqliteCommandSyntax into a line-by-line list of lazy
-- BL'ByteStrings. The output is suitable for inclusion in a
-- migration script. Comments are generated giving a description of each
-- migration step.
migrateScript :: MigrationSteps Sqlite () a -> [ByteString]
-- | Write the output of migrateScript to a file
writeMigrationScript :: FilePath -> MigrationSteps Sqlite () a -> IO ()
-- | HaskellPredicateConverter that can convert all constraints
-- generated by getDbConstaints into their equivalent in the
-- beam-migrate haskell syntax. Suitable for auto-generation of
-- a haskell migration.
sqlitePredConverter :: HaskellPredicateConverter
-- | Convert a SQLite data type to the corresponding Haskell one
sqliteTypeToHs :: SqliteDataTypeSyntax -> Maybe HsDataType
-- | Get a list of database predicates for the current database. This is
-- beam's best guess at providing a schema for the current database. Note
-- that SQLite type names are not standardized, and the so-called column
-- "affinities" are too broad to be of use. This function attemps to
-- guess a good enough type based on the exact type supplied in the
-- CREATE TABLE commands. It will correctly parse any type
-- generated by beam and most SQL compliant types, but it may falter on
-- databases created or managed by tools that do not follow these
-- standards.
getDbConstraints :: SqliteM [SomeDatabasePredicate]
sqliteText :: DataType Sqlite Text
sqliteBlob :: DataType Sqlite ByteString
sqliteBigInt :: DataType Sqlite Int64
module Database.Beam.Sqlite
sqliteText :: DataType Sqlite Text
sqliteBlob :: DataType Sqlite ByteString
sqliteBigInt :: DataType Sqlite Int64
-- | A SQLite command. INSERT is special cased to handle AUTO
-- INCREMENT columns. The fromSqliteCommand function will
-- take an SqliteCommandSyntax and convert it into the correct
-- SqliteSyntax.
data SqliteCommandSyntax
SqliteCommandSyntax :: SqliteSyntax -> SqliteCommandSyntax
SqliteCommandInsert :: SqliteInsertSyntax -> SqliteCommandSyntax
-- | The syntax for SQLite is stored as a Builder along with a list
-- of data that hasn't been serialized yet.
--
-- The first argument is a function that receives a builder for
-- SQLData and returns the concrete syntax to embed into the
-- query. For queries sent to the backend, this is simply a function that
-- returns "?". Thus, the syntax sent to the backend includes
-- proper placeholders. The list of data is sent to the SQLite library
-- for proper escaping.
--
-- When the syntax is being serialized for display (for use in beam
-- migrate for example), the data builder attempts to properly format and
-- escape the data. This returns syntax suitable for inclusion in
-- scripts. In this case, the value list is ignored.
data SqliteSyntax
-- | SQLite SELECT syntax
data SqliteSelectSyntax
-- | SQLite INSERT syntax. This doesn't directly wrap
-- SqliteSyntax because we need to do some processing on
-- INSERT statements to deal with AUTO INCREMENT
-- columns. Use formatSqliteInsert to turn
-- SqliteInsertSyntax into SqliteSyntax.
data SqliteInsertSyntax
-- | SQLite UPDATE syntax
data SqliteUpdateSyntax
-- | SQLite DELETE syntax
data SqliteDeleteSyntax
-- | Convert a SqliteCommandSyntax into a renderable
-- SqliteSyntax
fromSqliteCommand :: SqliteCommandSyntax -> SqliteSyntax
-- | Render a SqliteSyntax as a lazy ByteString, for purposes
-- of displaying to a user. Embedded SQLData is directly embedded
-- into the concrete syntax, with a best effort made to escape strings.
sqliteRenderSyntaxScript :: SqliteSyntax -> ByteString
-- | The SQLite group_concat function. Joins the value in each row
-- of the first argument, using the second argument as a delimiter. See
-- sqliteGroupConcatOver if you want to provide explicit
-- quantification.
sqliteGroupConcat :: (BeamSqlBackendCanSerialize Sqlite a, BeamSqlBackendIsString Sqlite str, BeamSqlBackendIsString Sqlite str2) => QExpr Sqlite s a -> QExpr Sqlite s str -> QAgg Sqlite s (Maybe str2)
-- | The SQLite group_concat function. Joins the value in each row
-- of the first argument using ','. See sqliteGroupConcat if you
-- want to change the delimiter. Choosing a custom delimiter and
-- quantification isn't allowed by SQLite.
sqliteGroupConcatOver :: (BeamSqlBackendCanSerialize Sqlite a, BeamSqlBackendIsString Sqlite str) => Maybe SqliteAggregationSetQuantifierSyntax -> QExpr Sqlite s a -> QAgg Sqlite s (Maybe str)