name:                hpqtypes
version:             1.5.2.0
synopsis:            Haskell bindings to libpqtypes

description:         Efficient and easy-to-use bindings to (slightly modified)
                     libpqtypes, lipq extension that adds support for binary
                     transport format and composite types.
                     .
                     Since modified libpqtypes is used, its source code is bundled
                     along with the bindings. The differences between verbatim
                     libpqtypes and the one used by this package:
                     .
                     * per-thread global error structures were replaced by
                       explicit passing of these structures around so that
                       there is no need to use bound threads.
                     .
                     * handlers that take values to be put into the database were
                       modified to always expect pointers to objects, as opposed
                       to previous situation where primitives were being taken by
                       value (which was convenient if the library was used
                       directly from C, but created inconsistency problems
                       while trying to define bindings in a sensible way).
                     .
                     Examples can be found in the
                     <https://github.com/scrive/hpqtypes/tree/master/examples examples>
                     directory.

homepage:            https://github.com/scrive/hpqtypes
license:             BSD3
license-file:        LICENSE
author:              Scrive AB
maintainer:          Andrzej Rybczak <andrzej@rybczak.net>,
                     Jonathan Jouty <jonathan@scrive.com>,
                     Mikhail Glushenkov <mikhail@scrive.com>
copyright:           Scrive AB
category:            Database
build-type:          Custom
cabal-version:       >= 1.18
tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1


extra-source-files: README.md
                  , CHANGELOG.md
                  , examples/Catalog.hs
                  , libpqtypes/AUTHORS
                  , libpqtypes/Makefile.in
                  , libpqtypes/config.guess
                  , libpqtypes/groff2html
                  , libpqtypes/win32.mak
                  , libpqtypes/ChangeLog
                  , libpqtypes/Makefile.win32
                  , libpqtypes/config.sub
                  , libpqtypes/install-sh
                  , libpqtypes/INSTALL
                  , libpqtypes/README
                  , libpqtypes/configure
                  , libpqtypes/ltmain.sh
                  , libpqtypes/LICENSE
                  , libpqtypes/acinclude.m4
                  , libpqtypes/configure.ac
                  , libpqtypes/missing
                  , libpqtypes/Makefile.am
                  , libpqtypes/aclocal.m4
                  , libpqtypes/src/pqt_config.h
                  , libpqtypes/src/pqt_config.h.in
                  , libpqtypes/src/libpqtypes-int.h
                  , libpqtypes/src/libpqtypes.h

custom-setup
  setup-depends: base >= 4.7 && < 4.12,
                 Cabal >= 1.24 && < 2.3,
                 directory,
                 filepath

source-repository head
  type:     git
  location: https://github.com/scrive/hpqtypes.git

source-repository this
  type:     git
  location: https://github.com/scrive/hpqtypes.git
  tag:      1.5.2.0

library
  exposed-modules:     Data.Monoid.Utils
                     , Database.PostgreSQL.PQTypes
                     , Database.PostgreSQL.PQTypes.Composite
                     , Database.PostgreSQL.PQTypes.ToRow
                     , Database.PostgreSQL.PQTypes.Utils
                     , Database.PostgreSQL.PQTypes.FromSQL
                     , Database.PostgreSQL.PQTypes.Array
                     , Database.PostgreSQL.PQTypes.Fold
                     , Database.PostgreSQL.PQTypes.FromRow
                     , Database.PostgreSQL.PQTypes.JSON
                     , Database.PostgreSQL.PQTypes.ToSQL
                     , Database.PostgreSQL.PQTypes.Transaction
                     , Database.PostgreSQL.PQTypes.Class
                     , Database.PostgreSQL.PQTypes.Format
                     , Database.PostgreSQL.PQTypes.Interval
                     , Database.PostgreSQL.PQTypes.Notification
                     , Database.PostgreSQL.PQTypes.SQL
                     , Database.PostgreSQL.PQTypes.SQL.Raw
                     , Database.PostgreSQL.PQTypes.SQL.Class
                     , Database.PostgreSQL.PQTypes.Transaction.Settings
                     , Database.PostgreSQL.PQTypes.XML
                     , Database.PostgreSQL.PQTypes.Internal.Error
                     , Database.PostgreSQL.PQTypes.Internal.Error.Code
                     , Database.PostgreSQL.PQTypes.Internal.Composite
                     , Database.PostgreSQL.PQTypes.Internal.Utils
                     , Database.PostgreSQL.PQTypes.Internal.Connection
                     , Database.PostgreSQL.PQTypes.Internal.Exception
                     , Database.PostgreSQL.PQTypes.Internal.Monad
                     , Database.PostgreSQL.PQTypes.Internal.Notification
                     , Database.PostgreSQL.PQTypes.Internal.QueryResult
                     , Database.PostgreSQL.PQTypes.Internal.Query
                     , Database.PostgreSQL.PQTypes.Internal.State
                     , Database.PostgreSQL.PQTypes.Internal.C.Put
                     , Database.PostgreSQL.PQTypes.Internal.C.Types
                     , Database.PostgreSQL.PQTypes.Internal.C.Interface
                     , Database.PostgreSQL.PQTypes.Internal.C.Get

  build-depends:       base >= 4.7 && < 4.12
                     , text >= 0.11
                     , aeson >= 0.6.2.0
                     , bytestring >= 0.9
                     , semigroups >= 0.16
                     , time >= 1.4
                     , vector >= 0.10
                     , transformers-base >= 0.4
                     , monad-control >= 0.3
                     , lifted-base >= 0.2
                     , resource-pool >= 0.2
                     , mtl >= 2.1
                     , transformers >= 0.2.2
                     , containers >= 0.4.0.0
                     , exceptions >= 0.6
                     , data-default-class
                     , text-show >= 2

  hs-source-dirs:    src

  ghc-options:       -O2 -Wall -funbox-strict-fields

  build-tools:       hsc2hs
  include-dirs:      libpqtypes/src
  extra-libraries:   pq

  cc-options:        -DHAVE_CONFIG_H -D_GNU_SOURCE -D_REENTRANT -std=gnu99 -fsigned-char -fno-strict-aliasing -Wall -Wextra

  c-sources:           libpqtypes/src/array.c
                     , libpqtypes/src/datetime.c
                     , libpqtypes/src/error.c
                     , libpqtypes/src/events.c
                     , libpqtypes/src/exec.c
                     , libpqtypes/src/ffi.c
                     , libpqtypes/src/geo.c
                     , libpqtypes/src/handler.c
                     , libpqtypes/src/misc.c
                     , libpqtypes/src/network.c
                     , libpqtypes/src/numerics.c
                     , libpqtypes/src/param.c
                     , libpqtypes/src/port.c
                     , libpqtypes/src/record.c
                     , libpqtypes/src/spec.c
                     , libpqtypes/src/utils.c
                     , libpqtypes/src/varlena.c

  default-language:  Haskell2010
  default-extensions: BangPatterns
                    , ConstraintKinds
                    , DataKinds
                    , DeriveDataTypeable
                    , DeriveFunctor
                    , ExistentialQuantification
                    , FlexibleContexts
                    , FlexibleInstances
                    , ForeignFunctionInterface
                    , GADTs
                    , GeneralizedNewtypeDeriving
                    , MultiParamTypeClasses
                    , NoImplicitPrelude
                    , OverloadedStrings
                    , RankNTypes
                    , RecordWildCards
                    , ScopedTypeVariables
                    , StandaloneDeriving
                    , TupleSections
                    , TypeFamilies
                    , TypeOperators
                    , UndecidableInstances

test-suite hpqtypes-tests
  type:              exitcode-stdio-1.0
  ghc-options:       -O2 -Wall -funbox-strict-fields -threaded

  hs-source-dirs:    test
  main-is:           Main.hs
  other-modules:     Prelude.Instances
                     Test.QuickCheck.Compat
                     Test.QuickCheck.Arbitrary.Instances
  build-depends:       hpqtypes
                     , base >= 4.7 && < 5
                     , HUnit >= 1.2
                     , QuickCheck >= 2.5
                     , aeson >= 0.6.2.0
                     , bytestring >= 0.9
                     , exceptions >= 0.6
                     , lifted-base >= 0.2
                     , monad-control >= 0.3
                     , mtl >= 2.1
                     , random >= 1.0
                     , scientific
                     , test-framework >= 0.8
                     , test-framework-hunit >= 0.3
                     , text >= 0.11
                     , text-show
                     , time >= 1.4
                     , transformers-base >= 0.4
                     , unordered-containers
                     , vector

  default-language:  Haskell2010
  default-extensions: BangPatterns
                    , ConstraintKinds
                    , DataKinds
                    , DeriveDataTypeable
                    , DeriveFunctor
                    , ExistentialQuantification
                    , FlexibleContexts
                    , FlexibleInstances
                    , ForeignFunctionInterface
                    , GADTs
                    , GeneralizedNewtypeDeriving
                    , MultiParamTypeClasses
                    , NoImplicitPrelude
                    , OverloadedStrings
                    , RankNTypes
                    , RecordWildCards
                    , ScopedTypeVariables
                    , StandaloneDeriving
                    , TupleSections
                    , TypeFamilies
                    , TypeOperators
                    , UndecidableInstances