beam-sqlite 0.3.2.3 → 0.3.2.4
raw patch · 5 files changed
+72/−3 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Database.Beam.Sqlite.Syntax: 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)
+ Database.Beam.Sqlite: sqliteGroupConcat :: (HasSqlValueSyntax SqliteValueSyntax a, IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str, IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str2) => QExpr SqliteExpressionSyntax s a -> QExpr SqliteExpressionSyntax s str -> QAgg SqliteExpressionSyntax s (Maybe str2)
+ Database.Beam.Sqlite: sqliteGroupConcatOver :: (HasSqlValueSyntax SqliteValueSyntax a, IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str) => Maybe SqliteAggregationSetQuantifierSyntax -> QExpr SqliteExpressionSyntax s a -> QAgg SqliteExpressionSyntax s (Maybe str)
+ Database.Beam.Sqlite.Connection: instance Control.Monad.Fail.MonadFail Database.Beam.Sqlite.Connection.SqliteM
+ Database.Beam.Sqlite.Syntax: SqliteAggregationSetQuantifierSyntax :: SqliteSyntax -> SqliteAggregationSetQuantifierSyntax
+ Database.Beam.Sqlite.Syntax: [fromSqliteAggregationSetQuantifier] :: SqliteAggregationSetQuantifierSyntax -> SqliteSyntax
+ Database.Beam.Sqlite.Syntax: fromSqliteExpression :: SqliteExpressionSyntax -> SqliteSyntax
+ Database.Beam.Sqlite.Syntax: 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)
+ Database.Beam.Sqlite.Syntax: newtype SqliteAggregationSetQuantifierSyntax
+ Database.Beam.Sqlite.Syntax: parens :: SqliteSyntax -> SqliteSyntax
- Database.Beam.Sqlite.Syntax: SqliteSyntax :: ((SQLData -> Builder) -> Builder) -> (DList SQLData) -> SqliteSyntax
+ Database.Beam.Sqlite.Syntax: SqliteSyntax :: ((SQLData -> Builder) -> Builder) -> DList SQLData -> SqliteSyntax
Files
- Database/Beam/Sqlite.hs +3/−0
- Database/Beam/Sqlite/Connection.hs +2/−1
- Database/Beam/Sqlite/SqliteSpecific.hs +61/−0
- Database/Beam/Sqlite/Syntax.hs +4/−1
- beam-sqlite.cabal +2/−1
Database/Beam/Sqlite.hs view
@@ -9,8 +9,11 @@ , SqliteUpdateSyntax, SqliteDeleteSyntax , fromSqliteCommand, sqliteRenderSyntaxScript++ , module Database.Beam.Sqlite.SqliteSpecific ) where import Database.Beam.Sqlite.Syntax+import Database.Beam.Sqlite.SqliteSpecific import Database.Beam.Sqlite.Connection import Database.Beam.Sqlite.Migrate (sqliteText, sqliteBlob, sqliteBigInt)
Database/Beam/Sqlite/Connection.hs view
@@ -37,6 +37,7 @@ import Control.Exception (bracket_, onException, mask) import Control.Monad (forM_, replicateM_)+import Control.Monad.Fail (MonadFail) import Control.Monad.Free.Church import Control.Monad.IO.Class (MonadIO(..)) import Control.Monad.Identity (Identity)@@ -143,7 +144,7 @@ { runSqliteM :: ReaderT (String -> IO (), Connection) IO a -- ^ Run an IO action with access to a SQLite connection and a debug logging -- function, called or each query submitted on the connection.- } deriving (Monad, Functor, Applicative, MonadIO)+ } deriving (Monad, Functor, Applicative, MonadIO, MonadFail) newtype BeamSqliteParams = BeamSqliteParams [SQLData] instance ToRow BeamSqliteParams where
+ Database/Beam/Sqlite/SqliteSpecific.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE OverloadedStrings #-}++-- | Postgres-specific types, functions, and operators+module Database.Beam.Sqlite.SqliteSpecific+ ( -- * Sqlite functions and aggregates+ sqliteGroupConcat+ , sqliteGroupConcatOver+ )+where++import Database.Beam+import Database.Beam.Backend.SQL+import Database.Beam.Query.Internal+import Database.Beam.Sqlite.Syntax+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif++-- | 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 + :: ( HasSqlValueSyntax SqliteValueSyntax a+ , IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str + , IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str2+ )+ => QExpr SqliteExpressionSyntax s a+ -> QExpr SqliteExpressionSyntax s str+ -> QAgg SqliteExpressionSyntax s (Maybe str2)+sqliteGroupConcat v delim = _sqliteGroupConcatOver allInGroup_ v (Just delim)+++-- | 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 + :: ( HasSqlValueSyntax SqliteValueSyntax a+ , IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str + )+ => Maybe SqliteAggregationSetQuantifierSyntax+ -> QExpr SqliteExpressionSyntax s a+ -> QAgg SqliteExpressionSyntax s (Maybe str)+sqliteGroupConcatOver quantifier v = _sqliteGroupConcatOver quantifier v Nothing++-- SQLite doesn't allow DISTINCT and a custom delimiter+_sqliteGroupConcatOver + :: ( HasSqlValueSyntax SqliteValueSyntax a+ , IsSqlExpressionSyntaxStringType SqliteExpressionSyntax str+ )+ => Maybe SqliteAggregationSetQuantifierSyntax+ -> QExpr SqliteExpressionSyntax s a+ -> Maybe (QExpr SqliteExpressionSyntax s str2)+ -> QAgg SqliteExpressionSyntax s (Maybe str)+_sqliteGroupConcatOver quantifier (QExpr v) delim =+ QExpr $ \tbl -> SqliteExpressionSyntax $+ emit "group_concat" <>+ parens ( maybe mempty (\q -> fromSqliteAggregationSetQuantifier q <> emit " ") quantifier <>+ fromSqliteExpression (v tbl) <> + maybe mempty (\(QExpr d) -> emit ", " <> fromSqliteExpression (d tbl)) delim)
Database/Beam/Sqlite/Syntax.hs view
@@ -21,7 +21,10 @@ , SqliteInsertValuesSyntax(..) , SqliteColumnSchemaSyntax(..) , SqliteExpressionSyntax(..), SqliteValueSyntax(..)+ , SqliteAggregationSetQuantifierSyntax(..) + , fromSqliteExpression+ -- * SQLite data type syntax , SqliteDataTypeSyntax(..) , sqliteTextType, sqliteBlobType@@ -30,7 +33,7 @@ -- * Building and consuming 'SqliteSyntax' , fromSqliteCommand, formatSqliteInsert - , emit, emitValue+ , emit, emitValue, parens , sqliteEscape, withPlaceholders , sqliteRenderSyntaxScript
beam-sqlite.cabal view
@@ -1,6 +1,6 @@ name: beam-sqlite-version: 0.3.2.3+version: 0.3.2.4 synopsis: Beam driver for SQLite description: Beam driver for the <https://sqlite.org/ SQLite> embedded database. See <http://tathougies.github.io/beam/user-guide/backends/beam-sqlite/ here>@@ -23,6 +23,7 @@ Database.Beam.Sqlite.Syntax Database.Beam.Sqlite.Connection Database.Beam.Sqlite.Migrate+ other-modules: Database.Beam.Sqlite.SqliteSpecific build-depends: base >=4.7 && <5, beam-core >=0.7 && <0.8,