-- 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.2.0.0 -- | 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 newtype SqliteColumnSchemaSyntax SqliteColumnSchemaSyntax :: SqliteSyntax -> SqliteColumnSchemaSyntax [fromSqliteColumnSchema] :: SqliteColumnSchemaSyntax -> SqliteSyntax -- | 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 -> SqliteDataTypeSyntax [fromSqliteDataType] :: SqliteDataTypeSyntax -> SqliteSyntax [sqliteDataTypeToHs] :: SqliteDataTypeSyntax -> HsDataType [sqliteDataTypeSerialized] :: SqliteDataTypeSyntax -> BeamSerializedDataType sqliteTextType :: SqliteDataTypeSyntax sqliteBlobType :: SqliteDataTypeSyntax sqliteBigIntType :: 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 Data.Hashable.Class.Hashable 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.Monoid (Database.Beam.Query.CustomSQL.CustomSqlSyntax Database.Beam.Sqlite.Syntax.SqliteExpressionSyntax) 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 Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataTypeConstraints Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax (Database.Beam.Backend.SQL.Types.SqlSerial GHC.Types.Int) 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 Database.Beam.Migrate.SQL.SQL92.Sql92DisplaySyntax Database.Beam.Sqlite.Syntax.SqliteColumnSchemaSyntax 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.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 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 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 (GHC.Base.Maybe x) => Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax (Database.Beam.Backend.Types.Auto 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.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.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 or use with withDbConnection. sqliteUriSyntax :: c SqliteCommandSyntax Sqlite Connection SqliteM -> BeamURIOpeners c -- | 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 -> SqliteInsertReturning table -- | Runs a SqliteInsertReturning statement and returns a result for -- each inserted row. Unfilled Auto values in the table will have -- been filled in in the output. 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 instance Database.SQLite.Simple.FromField.FromField x => Database.SQLite.Simple.FromField.FromField (Database.Beam.Backend.Types.Auto x) -- | Migrations support for SQLite databases module Database.Beam.Sqlite.Migrate -- | Top-level BeamMigrationBackend loaded dynamically by the -- beam-migrate CLI tool. migrationBackend :: BeamMigrationBackend Sqlite SqliteCommandSyntax Connection -- | 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 -- | 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