beam-sqlite-0.3.2.2: Beam driver for SQLite

Safe HaskellNone
LanguageHaskell2010

Database.Beam.Sqlite.Syntax

Contents

Description

SQLite implementations of the Beam SQL syntax classes

The SQLite command syntax is implemented by SQLiteCommandSyntax.

Synopsis

SQLite syntaxes

data SqliteSyntax #

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.

Constructors

SqliteSyntax ((SQLData -> Builder) -> Builder) (DList SQLData) 

data SqliteCommandSyntax #

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.

Instances

IsSql92Syntax SqliteCommandSyntax # 
IsSql92DdlCommandSyntax SqliteCommandSyntax # 
MonadBeamInsertReturning SqliteCommandSyntax Sqlite Connection SqliteM # 
MonadBeam SqliteCommandSyntax Sqlite Connection SqliteM # 
type Sql92DeleteSyntax SqliteCommandSyntax # 
type Sql92UpdateSyntax SqliteCommandSyntax # 
type Sql92InsertSyntax SqliteCommandSyntax # 
type Sql92SelectSyntax SqliteCommandSyntax # 
type Sql92DdlCommandDropTableSyntax SqliteCommandSyntax # 
type Sql92DdlCommandAlterTableSyntax SqliteCommandSyntax # 
type Sql92DdlCommandCreateTableSyntax SqliteCommandSyntax # 

data SqliteInsertSyntax #

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 SqliteColumnSchemaSyntax #

SQLite syntax for column schemas in CREATE TABLE or ALTER COLUMN ... ADD COLUMN statements

Instances

Eq SqliteColumnSchemaSyntax # 
Show SqliteColumnSchemaSyntax # 
Generic SqliteColumnSchemaSyntax # 
Hashable SqliteColumnSchemaSyntax # 
IsBeamSerialColumnSchemaSyntax SqliteColumnSchemaSyntax # 
Sql92DisplaySyntax SqliteColumnSchemaSyntax # 
IsSql92ColumnSchemaSyntax SqliteColumnSchemaSyntax # 
HasDefaultSqlDataTypeConstraints SqliteColumnSchemaSyntax ByteString # 
HasDefaultSqlDataTypeConstraints SqliteColumnSchemaSyntax LocalTime # 
HasDefaultSqlDataTypeConstraints SqliteColumnSchemaSyntax (SqlSerial Int) # 
type Rep SqliteColumnSchemaSyntax # 
type Rep SqliteColumnSchemaSyntax = D1 * (MetaData "SqliteColumnSchemaSyntax" "Database.Beam.Sqlite.Syntax" "beam-sqlite-0.3.2.2-E0z3OF2VwCdCxemzuQUxIC" False) (C1 * (MetaCons "SqliteColumnSchemaSyntax" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "fromSqliteColumnSchema") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * SqliteSyntax)) (S1 * (MetaSel (Just Symbol "sqliteIsSerialColumn") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Bool))))
type Sql92ColumnSchemaColumnConstraintDefinitionSyntax SqliteColumnSchemaSyntax # 
type Sql92ColumnSchemaExpressionSyntax SqliteColumnSchemaSyntax # 
type Sql92ColumnSchemaColumnTypeSyntax SqliteColumnSchemaSyntax # 

data SqliteExpressionSyntax #

Implements beam SQL expression syntaxes

Instances

Eq SqliteExpressionSyntax # 
Show SqliteExpressionSyntax # 
Generic SqliteExpressionSyntax # 
Hashable SqliteExpressionSyntax # 
IsCustomSqlSyntax SqliteExpressionSyntax # 
IsSql99ConcatExpressionSyntax SqliteExpressionSyntax # 
IsSql92ExpressionSyntax SqliteExpressionSyntax # 

Methods

valueE :: Sql92ExpressionValueSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

rowE :: [SqliteExpressionSyntax] -> SqliteExpressionSyntax #

quantifierListE :: [SqliteExpressionSyntax] -> SqliteExpressionSyntax #

coalesceE :: [SqliteExpressionSyntax] -> SqliteExpressionSyntax #

caseE :: [(SqliteExpressionSyntax, SqliteExpressionSyntax)] -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

fieldE :: Sql92ExpressionFieldNameSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

betweenE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

andE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

orE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

addE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

subE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

mulE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

divE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

likeE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

modE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

overlapsE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

nullIfE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

positionE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

eqE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

neqE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

ltE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

gtE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

leE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

geE :: Maybe (Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax) -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

eqMaybeE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

neqMaybeE :: SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

castE :: SqliteExpressionSyntax -> Sql92ExpressionCastTargetSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

notE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

negateE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isNullE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isNotNullE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isTrueE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isNotTrueE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isFalseE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isNotFalseE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isUnknownE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

isNotUnknownE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

charLengthE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

octetLengthE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

bitLengthE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

lowerE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

upperE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

trimE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

absE :: SqliteExpressionSyntax -> SqliteExpressionSyntax #

extractE :: Sql92ExpressionExtractFieldSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax -> SqliteExpressionSyntax #

existsE :: Sql92ExpressionSelectSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

uniqueE :: Sql92ExpressionSelectSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

subqueryE :: Sql92ExpressionSelectSyntax SqliteExpressionSyntax -> SqliteExpressionSyntax #

currentTimestampE :: SqliteExpressionSyntax #

defaultE :: SqliteExpressionSyntax #

inE :: SqliteExpressionSyntax -> [SqliteExpressionSyntax] -> SqliteExpressionSyntax #

IsSql92AggregationExpressionSyntax SqliteExpressionSyntax # 
HasSqlEqualityCheck SqliteExpressionSyntax Bool # 
HasSqlEqualityCheck SqliteExpressionSyntax Char # 
HasSqlEqualityCheck SqliteExpressionSyntax Double # 
HasSqlEqualityCheck SqliteExpressionSyntax Float # 
HasSqlEqualityCheck SqliteExpressionSyntax Int # 
HasSqlEqualityCheck SqliteExpressionSyntax Int8 # 
HasSqlEqualityCheck SqliteExpressionSyntax Int16 # 
HasSqlEqualityCheck SqliteExpressionSyntax Int32 # 
HasSqlEqualityCheck SqliteExpressionSyntax Int64 # 
HasSqlEqualityCheck SqliteExpressionSyntax Integer # 
HasSqlEqualityCheck SqliteExpressionSyntax Word # 
HasSqlEqualityCheck SqliteExpressionSyntax Word8 # 
HasSqlEqualityCheck SqliteExpressionSyntax Word16 # 
HasSqlEqualityCheck SqliteExpressionSyntax Word32 # 
HasSqlEqualityCheck SqliteExpressionSyntax Word64 # 
HasSqlEqualityCheck SqliteExpressionSyntax ByteString # 
HasSqlEqualityCheck SqliteExpressionSyntax ByteString # 
HasSqlEqualityCheck SqliteExpressionSyntax Scientific # 
HasSqlEqualityCheck SqliteExpressionSyntax String # 
HasSqlEqualityCheck SqliteExpressionSyntax Text # 
HasSqlEqualityCheck SqliteExpressionSyntax UTCTime # 
HasSqlEqualityCheck SqliteExpressionSyntax Text # 
HasSqlEqualityCheck SqliteExpressionSyntax ZonedTime # 
HasSqlEqualityCheck SqliteExpressionSyntax LocalTime # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Bool # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Char # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Double # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Float # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Int # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Int8 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Int16 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Int32 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Int64 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Integer # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Word # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Word8 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Word16 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Word32 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Word64 # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax ByteString # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax ByteString # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Scientific # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax String # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Text # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax UTCTime # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax Text # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax ZonedTime # 
HasSqlQuantifiedEqualityCheck SqliteExpressionSyntax LocalTime # 
IsString (CustomSqlSyntax SqliteExpressionSyntax) # 
Semigroup (CustomSqlSyntax SqliteExpressionSyntax) # 
Monoid (CustomSqlSyntax SqliteExpressionSyntax) # 
IsSqlExpressionSyntaxStringType * * SqliteExpressionSyntax String # 
IsSqlExpressionSyntaxStringType * * SqliteExpressionSyntax Text # 
type Rep SqliteExpressionSyntax # 
type Rep SqliteExpressionSyntax = D1 * (MetaData "SqliteExpressionSyntax" "Database.Beam.Sqlite.Syntax" "beam-sqlite-0.3.2.2-E0z3OF2VwCdCxemzuQUxIC" False) ((:+:) * (C1 * (MetaCons "SqliteExpressionSyntax" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * SqliteSyntax))) (C1 * (MetaCons "SqliteExpressionDefault" PrefixI False) (U1 *)))
data CustomSqlSyntax SqliteExpressionSyntax # 
type Sql92ExpressionExtractFieldSyntax SqliteExpressionSyntax # 
type Sql92ExpressionCastTargetSyntax SqliteExpressionSyntax # 
type Sql92ExpressionFieldNameSyntax SqliteExpressionSyntax # 
type Sql92ExpressionSelectSyntax SqliteExpressionSyntax # 
type Sql92ExpressionValueSyntax SqliteExpressionSyntax # 
type Sql92ExpressionQuantifierSyntax SqliteExpressionSyntax # 
type Sql92AggregationSetQuantifierSyntax SqliteExpressionSyntax # 

newtype SqliteValueSyntax #

SQLite syntax for values that can be embedded in SqliteSyntax

Instances

HasSqlValueSyntax SqliteValueSyntax Bool # 
HasSqlValueSyntax SqliteValueSyntax Double # 
HasSqlValueSyntax SqliteValueSyntax Float # 
HasSqlValueSyntax SqliteValueSyntax Int # 
HasSqlValueSyntax SqliteValueSyntax Int8 # 
HasSqlValueSyntax SqliteValueSyntax Int16 # 
HasSqlValueSyntax SqliteValueSyntax Int32 # 
HasSqlValueSyntax SqliteValueSyntax Int64 # 
HasSqlValueSyntax SqliteValueSyntax Word # 
HasSqlValueSyntax SqliteValueSyntax Word8 # 
HasSqlValueSyntax SqliteValueSyntax Word16 # 
HasSqlValueSyntax SqliteValueSyntax Word32 # 
HasSqlValueSyntax SqliteValueSyntax Word64 # 
HasSqlValueSyntax SqliteValueSyntax ByteString # 
HasSqlValueSyntax SqliteValueSyntax Scientific # 
HasSqlValueSyntax SqliteValueSyntax String # 
HasSqlValueSyntax SqliteValueSyntax Text # 
HasSqlValueSyntax SqliteValueSyntax Text # 
HasSqlValueSyntax SqliteValueSyntax SqlNull # 
HasSqlValueSyntax SqliteValueSyntax LocalTime # 
HasSqlValueSyntax SqliteValueSyntax Day # 
HasSqlValueSyntax SqliteValueSyntax x => HasSqlValueSyntax SqliteValueSyntax (Maybe x) # 

SQLite data type syntax

data SqliteDataTypeSyntax #

SQLite syntax that implements IsSql92DataTypeSyntax and a good portion of IsSql99DataTypeSyntax, except for array and row types.

Instances

Eq SqliteDataTypeSyntax # 
Show SqliteDataTypeSyntax # 
Generic SqliteDataTypeSyntax # 
Hashable SqliteDataTypeSyntax # 
IsSql2008BigIntDataTypeSyntax SqliteDataTypeSyntax # 
IsSql99DataTypeSyntax SqliteDataTypeSyntax # 
IsSql92DataTypeSyntax SqliteDataTypeSyntax # 
Sql92DisplaySyntax SqliteDataTypeSyntax # 
Sql92SerializableDataTypeSyntax SqliteDataTypeSyntax # 
HasDefaultSqlDataType SqliteDataTypeSyntax ByteString # 
HasDefaultSqlDataType SqliteDataTypeSyntax LocalTime # 
HasDefaultSqlDataType SqliteDataTypeSyntax (SqlSerial Int) # 
type Rep SqliteDataTypeSyntax # 
type Rep SqliteDataTypeSyntax = D1 * (MetaData "SqliteDataTypeSyntax" "Database.Beam.Sqlite.Syntax" "beam-sqlite-0.3.2.2-E0z3OF2VwCdCxemzuQUxIC" False) (C1 * (MetaCons "SqliteDataTypeSyntax" PrefixI True) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "fromSqliteDataType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * SqliteSyntax)) (S1 * (MetaSel (Just Symbol "sqliteDataTypeToHs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * HsDataType))) ((:*:) * (S1 * (MetaSel (Just Symbol "sqliteDataTypeSerialized") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * BeamSerializedDataType)) (S1 * (MetaSel (Just Symbol "sqliteDataTypeSerial") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Bool)))))

Building and consuming SqliteSyntax

formatSqliteInsert :: Text -> [Text] -> SqliteInsertValuesSyntax -> SqliteSyntax #

Format a SQLite INSERT expression for the given table name, fields, and values.

emit :: ByteString -> SqliteSyntax #

Embed a ByteString directly in the syntax

emitValue :: SQLData -> SqliteSyntax #

Emit a properly escaped value into the syntax

This causes a literal ? 3

sqliteEscape :: Text -> Text #

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.

withPlaceholders :: ((SQLData -> Builder) -> Builder) -> Builder #

Convert the first argument of SQLiteSyntax to a ByteString Builder, where all the data has been replaced by "?" placeholders.

sqliteRenderSyntaxScript :: SqliteSyntax -> ByteString #

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.