-- 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.3.2.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 :: Text -> [Text] -> SqliteInsertValuesSyntax -> SqliteInsertSyntax
[sqliteInsertTable] :: SqliteInsertSyntax -> Text
[sqliteInsertFields] :: SqliteInsertSyntax -> [Text]
[sqliteInsertValues] :: SqliteInsertSyntax -> SqliteInsertValuesSyntax
-- | SQLite UPDATE syntax
newtype SqliteUpdateSyntax
SqliteUpdateSyntax :: SqliteSyntax -> SqliteUpdateSyntax
[fromSqliteUpdate] :: SqliteUpdateSyntax -> SqliteSyntax
-- | SQLite DELETE syntax
newtype SqliteDeleteSyntax
SqliteDeleteSyntax :: SqliteSyntax -> SqliteDeleteSyntax
[fromSqliteDelete] :: SqliteDeleteSyntax -> 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
-- | 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 :: Text -> [Text] -> SqliteInsertValuesSyntax -> 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
-- | 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.SqliteColumnConstraintDefinitionSyntax
instance GHC.Show.Show Database.Beam.Sqlite.Syntax.SqliteColumnConstraintDefinitionSyntax
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.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.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 Database.Beam.Migrate.SQL.Tables.FieldReturnType 'GHC.Types.True 'GHC.Types.False Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax resTy a => Database.Beam.Migrate.SQL.Tables.FieldReturnType 'GHC.Types.False 'GHC.Types.False Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax resTy (Database.Beam.Sqlite.Syntax.SqliteHasDefault -> a)
instance Database.Beam.Migrate.SQL.BeamExtensions.IsBeamSerialColumnSchemaSyntax Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92DdlCommandSyntax Database.Beam.Sqlite.Syntax.SqliteCommandSyntax
instance Database.Beam.Migrate.SQL.SQL92.IsSql92DropTableSyntax Database.Beam.Sqlite.Syntax.SqliteDropTableSyntax
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.IsSql92AlterTableSyntax Database.Beam.Sqlite.Syntax.SqliteAlterTableSyntax
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.IsSql92CreateTableSyntax Database.Beam.Sqlite.Syntax.SqliteCreateTableSyntax
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.Migrate.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.Migrate.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.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax (Database.Beam.Backend.SQL.Types.SqlSerial GHC.Types.Int)
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax Data.ByteString.Internal.ByteString
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Syntax.SqliteDataTypeSyntax Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Data.Hashable.Class.Hashable Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Migrate.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataTypeConstraints Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax (Database.Beam.Backend.SQL.Types.SqlSerial GHC.Types.Int)
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataTypeConstraints Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax Data.ByteString.Internal.ByteString
instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataTypeConstraints Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Backend.SQL.SQL92.IsSql92Syntax Database.Beam.Sqlite.Syntax.SqliteCommandSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92InsertSyntax Database.Beam.Sqlite.Syntax.SqliteInsertSyntax
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.IsSql92UpdateSyntax Database.Beam.Sqlite.Syntax.SqliteUpdateSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92FromSyntax Database.Beam.Sqlite.Syntax.SqliteFromSyntax
instance Database.Beam.Backend.SQL.SQL92.IsSql92TableSourceSyntax Database.Beam.Sqlite.Syntax.SqliteTableSourceSyntax
instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax GHC.Types.Int
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.Types.Word
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.Base.Maybe x)
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.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.Backend.SQL.SQL92.IsSqlExpressionSyntaxStringType Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Text.Internal.Text
instance Database.Beam.Backend.SQL.SQL92.IsSqlExpressionSyntaxStringType Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Base.String
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.SQL92.IsSql92DeleteSyntax Database.Beam.Sqlite.Syntax.SqliteDeleteSyntax
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Int
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Int
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int8
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int8
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int16
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int16
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int32
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int32
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int64
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Int.Int64
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Word
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Word
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word8
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word8
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word16
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word16
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word32
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word32
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word64
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Word.Word64
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Double
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Double
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Float
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Float
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Bool
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Bool
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Base.String
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Base.String
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Text.Internal.Text
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Text.Internal.Text
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Text.Internal.Lazy.Text
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Text.Internal.Lazy.Text
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.ByteString.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.ByteString.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Char
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Types.Char
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Integer.Type.Integer
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax GHC.Integer.Type.Integer
instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Scientific.Scientific
instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax Data.Scientific.Scientific
instance Database.Beam.Query.Types.HasQBuilder Database.Beam.Sqlite.Syntax.SqliteSelectSyntax
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.Migrate.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 whiche 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 SqliteCommandSyntax Sqlite Connection SqliteM -> BeamURIOpeners c
runBeamSqlite :: Connection -> SqliteM a -> IO a
runBeamSqliteDebug :: (String -> IO ()) -> Connection -> SqliteM a -> IO a
-- | Represents an INSERT statement, from which we can retrieve
-- inserted rows. Beam also offers a backend-agnostic way of using this
-- functionality in the MonadBeamInsertReturning extension. This
-- functionality is emulated in SQLite using a temporary table and a
-- trigger.
data SqliteInsertReturning (table :: (* -> *) -> *)
-- | Build a SqliteInsertReturning representing inserting the given
-- values into the given table. Use runInsertReturningList
insertReturning :: DatabaseEntity be db (TableEntity table) -> SqlInsertValues SqliteInsertValuesSyntax (table (QExpr SqliteExpressionSyntax s)) -> SqliteInsertReturning table
-- | Runs a SqliteInsertReturning statement and returns a result for
-- each inserted row.
runInsertReturningList :: FromBackendRow Sqlite (table Identity) => SqliteInsertReturning table -> SqliteM [table Identity]
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.Backend.Types.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.Syntax.SqliteCommandSyntax Database.Beam.Sqlite.Connection.Sqlite Database.SQLite.Simple.Internal.Connection 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.Syntax.SqliteCommandSyntax Database.Beam.Sqlite.Connection.Sqlite Database.SQLite.Simple.Internal.Connection Database.Beam.Sqlite.Connection.SqliteM
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Scientific.Scientific
instance Database.Beam.Backend.Types.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.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Bool
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Double
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Float
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Int
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int8
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int16
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int32
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Int.Int64
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Integer.Type.Integer
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Word
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word8
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word16
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word32
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Word.Word64
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Lazy.Internal.ByteString
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Text
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Text.Internal.Lazy.Text
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.Clock.Internal.UTCTime.UTCTime
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.Calendar.Days.Day
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Database.SQLite.Simple.Types.Null
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite GHC.Types.Char
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Database.Beam.Backend.SQL.Types.SqlNull
instance Database.Beam.Backend.Types.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Database.Beam.Backend.SQL.Types.BeamSqlBackend Database.Beam.Sqlite.Connection.Sqlite
instance Database.Beam.Backend.SQL.SQL92.BeamSql92Backend 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 SqliteCommandSyntax Sqlite Connection SqliteM
-- | 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 SqliteCommandSyntax () a -> [ByteString]
-- | Write the output of migrateScript to a file
writeMigrationScript :: FilePath -> MigrationSteps SqliteCommandSyntax () 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 SqliteDataTypeSyntax Text
sqliteBlob :: DataType SqliteDataTypeSyntax ByteString
sqliteBigInt :: DataType SqliteDataTypeSyntax Int64
module Database.Beam.Sqlite
sqliteText :: DataType SqliteDataTypeSyntax Text
sqliteBlob :: DataType SqliteDataTypeSyntax ByteString
sqliteBigInt :: DataType SqliteDataTypeSyntax 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