packages feed

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 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,