beam-postgres 0.3.1.0 → 0.3.2.0
raw patch · 12 files changed
+62/−20 lines, 12 filesdep +taggeddep +uuid-typesdep −uuiddep ~basedep ~beam-core
Dependencies added: tagged, uuid-types
Dependencies removed: uuid
Dependency ranges changed: base, beam-core
Files
- ChangeLog.md +4/−0
- Database/Beam/Postgres.hs +2/−0
- Database/Beam/Postgres/Conduit.hs +15/−6
- Database/Beam/Postgres/Connection.hs +4/−1
- Database/Beam/Postgres/Extensions.hs +4/−1
- Database/Beam/Postgres/Full.hs +4/−1
- Database/Beam/Postgres/Migrate.hs +6/−3
- Database/Beam/Postgres/PgCrypto.hs +1/−1
- Database/Beam/Postgres/PgSpecific.hs +4/−1
- Database/Beam/Postgres/Syntax.hs +14/−3
- Database/Beam/Postgres/Types.hs +1/−1
- beam-postgres.cabal +3/−2
ChangeLog.md view
@@ -1,3 +1,7 @@+# 0.3.2.0++Add `Semigroup` instances to prepare for GHC 8.4 and Stackage nightly+ # 0.3.1.0 Add `runBeamPostgres` and `runBeamPostgresDebug` functions.
Database/Beam/Postgres.hs view
@@ -48,6 +48,8 @@ , module Database.Beam.Postgres.PgSpecific + , runBeamPostgres, runBeamPostgresDebug+ -- ** Postgres extension support , PgExtensionEntity, IsPgExtension(..) , pgCreateExtension, pgDropExtension
Database/Beam/Postgres/Conduit.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} -- | More efficient query execution functions for @beam-postgres@. These@@ -24,14 +25,22 @@ import qualified Data.Conduit as C import Data.Int (Int64) import Data.Maybe (fromMaybe)-import Data.Monoid ((<>))+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif +#if MIN_VERSION_conduit(1,3,0)+#define CONDUIT_TRANSFORMER C.ConduitT+#else+#define CONDUIT_TRANSFORMER C.ConduitM+#endif+ -- * @SELECT@ -- | Run a PostgreSQL @SELECT@ statement in any 'MonadIO'. runSelect :: ( MonadIO m, MonadBaseControl IO m, FromBackendRow Postgres a ) => Pg.Connection -> SqlSelect PgSelectSyntax a- -> (C.ConduitT () a m () -> m b) -> m b+ -> (CONDUIT_TRANSFORMER () a m () -> m b) -> m b runSelect conn (SqlSelect (PgSelectSyntax syntax)) withSrc = runQueryReturning conn syntax withSrc @@ -50,7 +59,7 @@ runInsertReturning :: ( MonadIO m, MonadBaseControl IO m, FromBackendRow Postgres a) => Pg.Connection -> PgInsertReturning a- -> (C.ConduitT () a m () -> m b)+ -> (CONDUIT_TRANSFORMER () a m () -> m b) -> m b runInsertReturning _ PgInsertReturningEmpty withSrc = withSrc (pure ()) runInsertReturning conn (PgInsertReturning i) withSrc =@@ -71,7 +80,7 @@ runUpdateReturning :: ( MonadIO m, MonadBaseControl IO m, FromBackendRow Postgres a) => Pg.Connection -> PgUpdateReturning a- -> (C.ConduitT () a m () -> m b)+ -> (CONDUIT_TRANSFORMER () a m () -> m b) -> m b runUpdateReturning _ PgUpdateReturningEmpty withSrc = withSrc (pure ()) runUpdateReturning conn (PgUpdateReturning u) withSrc =@@ -91,7 +100,7 @@ -- 'MonadIO' and get a 'C.Source' of the deleted rows. runDeleteReturning :: ( MonadIO m, MonadBaseControl IO m, FromBackendRow Postgres a ) => Pg.Connection -> PgDeleteReturning a- -> (C.ConduitT () a m () -> m b) -> m b+ -> (CONDUIT_TRANSFORMER () a m () -> m b) -> m b runDeleteReturning conn (PgDeleteReturning d) withSrc = runQueryReturning conn d withSrc @@ -108,7 +117,7 @@ runQueryReturning :: ( MonadIO m, MonadBaseControl IO m, Functor m, FromBackendRow Postgres r ) => Pg.Connection -> PgSyntax- -> (C.ConduitT () r m () -> m b)+ -> (CONDUIT_TRANSFORMER () r m () -> m b) -> m b runQueryReturning conn x withSrc = do success <- liftIO $ do
Database/Beam/Postgres/Connection.hs view
@@ -9,6 +9,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-} module Database.Beam.Postgres.Connection ( PgRowReadError(..), PgError(..)@@ -55,11 +56,13 @@ import Data.ByteString (ByteString) import Data.ByteString.Builder (toLazyByteString, byteString) import qualified Data.ByteString.Lazy as BL-import Data.Monoid import Data.Proxy import Data.String import qualified Data.Text as T import Data.Text.Encoding (decodeUtf8)+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif import Foreign.C.Types
Database/Beam/Postgres/Extensions.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE CPP #-} -- | Postgres extensions are run-time loadable plugins that can extend Postgres -- functionality. Extensions are part of the database schema.@@ -23,9 +24,11 @@ import Data.Aeson import qualified Data.HashSet as HS import Data.Hashable (Hashable)-import Data.Monoid import Data.Proxy import Data.Text (Text)+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif -- *** Embedding extensions in databases
Database/Beam/Postgres/Full.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-}+{-# LANGUAGE CPP #-} -- | Module providing (almost) full support for Postgres query and data -- manipulation statements. These functions shadow the functions in@@ -51,8 +52,10 @@ import Control.Monad.Free.Church -import Data.Monoid ((<>)) import qualified Data.Text as T+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif -- * @SELECT@
Database/Beam/Postgres/Migrate.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans -fno-warn-type-defaults #-} -- | Migrations support for beam-postgres. See "Database.Beam.Migrate" for more@@ -56,14 +57,16 @@ import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy.Char8 as BCL-import Data.Monoid import Data.String import Data.Int import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified Data.Vector as V-import Data.UUID (UUID)+import Data.UUID.Types (UUID) import Data.Typeable+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif -- | Top-level migration backend for use by @beam-migrate@ tools migrationBackend :: Tool.BeamMigrationBackend PgCommandSyntax Postgres Pg.Connection Pg@@ -176,7 +179,7 @@ | Pg.typoid Pg.uuid == oid -> Just $ HsDataType (hsVarFrom "uuid" "Database.Beam.Postgres") (HsType (tyConNamed "UUID")- (importSome "Data.UUID" [importTyNamed "UUID"]))+ (importSome "Data.UUID.Types" [importTyNamed "UUID"])) (pgDataTypeSerialized pgUuidType) | Pg.typoid Pg.money == oid -> Just $ HsDataType (hsVarFrom "money" "Database.Beam.Postgres")
Database/Beam/Postgres/PgCrypto.hs view
@@ -14,7 +14,7 @@ import Data.Text (Text) import Data.ByteString (ByteString) import Data.Vector (Vector)-import Data.UUID (UUID)+import Data.UUID.Types (UUID) type PgExpr ctxt s = QGenExpr ctxt PgExpressionSyntax s
Database/Beam/Postgres/PgSpecific.hs view
@@ -8,6 +8,7 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE PolyKinds #-}+{-# LANGUAGE CPP #-} -- | Postgres-specific types, functions, and operators module Database.Beam.Postgres.PgSpecific@@ -97,7 +98,6 @@ import qualified Data.ByteString.Lazy as BL import Data.Foldable import Data.Hashable-import Data.Monoid import Data.Proxy import Data.Scientific (Scientific, formatScientific, FPFormat(Fixed)) import Data.String@@ -105,6 +105,9 @@ import Data.Time (LocalTime) import Data.Type.Bool import qualified Data.Vector as V+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif import qualified Database.PostgreSQL.Simple.FromField as Pg import qualified Database.PostgreSQL.Simple.ToField as Pg
Database/Beam/Postgres/Syntax.hs view
@@ -108,16 +108,19 @@ import Data.Hashable import Data.Int import Data.Maybe-import Data.Monoid import Data.Scientific (Scientific) import Data.String (IsString(..), fromString)+import Data.Tagged import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified Data.Text.Lazy as TL import Data.Time (LocalTime, UTCTime, ZonedTime, TimeOfDay, NominalDiffTime, Day)-import Data.UUID (UUID)+import Data.UUID.Types (UUID) import qualified Data.Vector as V import Data.Word+#if !MIN_VERSION_base(4, 11, 0)+import Data.Semigroup+#endif import qualified Database.PostgreSQL.Simple.ToField as Pg import qualified Database.PostgreSQL.Simple.TypeInfo.Static as Pg@@ -174,6 +177,9 @@ newtype PgSyntax = PgSyntax { buildPgSyntax :: PgSyntaxM () } +instance Semigroup PgSyntax where+ (<>) = mappend+ instance Monoid PgSyntax where mempty = PgSyntax (pure ()) mappend a b = PgSyntax (buildPgSyntax a >> buildPgSyntax b)@@ -620,7 +626,7 @@ instance IsCustomSqlSyntax PgExpressionSyntax where newtype CustomSqlSyntax PgExpressionSyntax = PgCustomExpressionSyntax { fromPgCustomExpression :: PgSyntax }- deriving Monoid+ deriving (Monoid, Semigroup) customExprSyntax = PgExpressionSyntax . fromPgCustomExpression renderSyntax = PgCustomExpressionSyntax . pgParens . fromPgExpression @@ -1372,3 +1378,8 @@ PG_HAS_EQUALITY_CHECK(V.Vector a) PG_HAS_EQUALITY_CHECK(CI T.Text) PG_HAS_EQUALITY_CHECK(CI TL.Text)++instance HasSqlEqualityCheck PgExpressionSyntax a =>+ HasSqlEqualityCheck PgExpressionSyntax (Tagged t a)+instance HasSqlQuantifiedEqualityCheck PgExpressionSyntax a =>+ HasSqlQuantifiedEqualityCheck PgExpressionSyntax (Tagged t a)
Database/Beam/Postgres/Types.hs view
@@ -29,7 +29,7 @@ import Data.Text (Text) import qualified Data.Text.Lazy as TL import Data.Time (UTCTime, Day, TimeOfDay, LocalTime, ZonedTime(..))-import Data.UUID (UUID)+import Data.UUID.Types (UUID) import Data.Vector (Vector) import Data.Word
beam-postgres.cabal view
@@ -1,5 +1,5 @@ name: beam-postgres-version: 0.3.1.0+version: 0.3.2.0 synopsis: Connection layer between beam and postgres description: Beam driver for <https://www.postgresql.org/ PostgreSQL>, an advanced open-source RDBMS homepage: http://tathougies.github.io/beam/user-guide/backends/beam-postgres@@ -44,12 +44,13 @@ mtl >=2.1 && <2.3, conduit >=1.2 && <1.4, aeson >=0.11 && <1.3,- uuid >=1.2 && <1.4,+ uuid-types >=1.0 && <1.1, case-insensitive >=1.2 && <1.3, scientific >=0.3 && <0.4, vector >=0.11 && <0.13, network-uri >=2.6 && <2.7, unordered-containers >= 0.2 && <0.3,+ tagged >=0.8 && <0.9, haskell-src-exts >=1.18 && <1.21 default-language: Haskell2010