cabal-version:      3.4
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.

-- Initial package description 'haskell-pgmq' generated by
-- 'cabal init'. For further documentation, see:
--   http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name:               haskell-bee

-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary:     +-+------- breaking API changes
--                  | | +----- non-breaking API additions
--                  | | | +--- code changes with no API change
version:            0.1.0.0

-- A short (one-line) description of the package.
-- synopsis:

-- A longer description of the package.
-- description:

-- URL for the project homepage or repository.
homepage:           https://gitlab.iscpif.fr/gargantext/haskell-bee

-- The license under which the package is released.
license:            AGPL-3.0-or-later

-- The file containing the license text.
license-file:       LICENSE

-- The package author(s).
author:             Gargantext

-- An email address to which users can send suggestions, bug reports, and patches.
maintainer:         gargantext@iscpif.fr

-- A copyright notice.
-- copyright:
category:           Concurrency
build-type:         Simple

-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files:    CHANGELOG.md
                  , README.md

-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:

common warnings
    ghc-options: -Wall

library
    -- Import common warning flags.
    import:           warnings

    -- Modules exported by the library.
    exposed-modules:  Async.Worker
                    , Async.Worker.Broker
                    , Async.Worker.Broker.PGMQ
                    , Async.Worker.Broker.Redis
                    , Async.Worker.Broker.Types
                    , Async.Worker.Types

    -- Modules included in this library but not exported.
    -- other-modules:

    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:

    -- Other library packages from which modules are imported.
    build-depends:    base ^>=4.17.2.0
                    , aeson >= 1.4 && < 2.3
                    , bytestring >= 0.11 && < 0.13
                    , haskell-pgmq >= 0.1.0.0 && < 0.2
                    , hedis >= 0.15.2 && < 0.16
                    , mtl >= 2.2 && < 2.4
                    , postgresql-libpq >= 0.10 && < 0.11
                    , postgresql-simple >= 0.6 && < 0.8
                    , safe >= 0.3 && < 0.4
                    , safe-exceptions >= 0.1.7 && < 0.2
                    , stm >= 2.5.3 && < 3
                    , text >= 1.2 && < 2.2
                    , time >= 1.10 && < 1.15
                    , units >= 2.4 && < 2.5

    -- Directories containing source files.
    hs-source-dirs:   src

    -- Base language which the package is written in.
    default-language: Haskell2010

    default-extensions:
      DuplicateRecordFields
      GeneralizedNewtypeDeriving
      ImportQualifiedPost
      NamedFieldPuns
      OverloadedStrings
      RecordWildCards
      
executable simple-worker
    -- Import common warning flags.
    import:           warnings

    build-depends:    base ^>=4.17.2.0
                    , aeson >= 1.4 && < 2.3
                    , haskell-pgmq >= 0.1.0.0 && < 0.2
                    , mtl >= 2.2 && < 2.4
                    , postgresql-simple >= 0.6 && < 0.8
                    , text >= 1.2 && < 2.2
                    
                    , haskell-bee

    -- Directories containing source files.
    hs-source-dirs:   bin/simple-worker
    main-is: Main.hs

    -- Base language which the package is written in.
    default-language: Haskell2010

    default-extensions:
      DuplicateRecordFields
      GeneralizedNewtypeDeriving
      ImportQualifiedPost
      NamedFieldPuns
      OverloadedStrings
      RecordWildCards

    ghc-options: -threaded

test-suite test-unit
    -- Import common warning flags.
    import:           warnings
    
    type:             exitcode-stdio-1.0
    
    build-depends:    base ^>=4.17.2.0
                    , aeson >= 1.4 && < 2.3
                    , tasty >= 1.5 && < 1.6
                    , tasty-hunit >= 0.10 && < 0.11
                    , tasty-quickcheck >= 0.10 && < 0.12
                    
                    , haskell-bee

    -- Directories containing source files.
    hs-source-dirs:   tests
    main-is: unit-tests.hs

    -- Base language which the package is written in.
    default-language: Haskell2010

    default-extensions:
      DuplicateRecordFields
      GeneralizedNewtypeDeriving
      ImportQualifiedPost
      NamedFieldPuns
      OverloadedStrings
      RecordWildCards

    ghc-options: -threaded

test-suite test-integration
    -- Import common warning flags.
    import:           warnings
    
    type:             exitcode-stdio-1.0

    other-modules:  Test.Integration.Broker
                  , Test.Integration.Utils
                  , Test.Integration.Worker
        
    build-depends:    base ^>=4.17.2.0
                    , aeson >= 1.4 && < 2.3
                    , containers >= 0.6 && < 0.8
                    , hedis >= 0.15.2 && < 0.16
                    , hspec >= 2.11 && < 3
                    , postgresql-simple >= 0.6 && < 0.8
                    , random-strings == 0.1.1.0
                    , stm >= 2.5.3 && < 3
                    , tasty >= 1.5 && < 1.6
                    , tasty-hspec >= 1.2.0 && < 2
                    , text >= 1.2 && < 2.2
                    
                    , haskell-bee

    -- Directories containing source files.
    hs-source-dirs:   tests
    main-is: integration-tests.hs

    -- Base language which the package is written in.
    default-language: Haskell2010

    default-extensions:
      DuplicateRecordFields
      GeneralizedNewtypeDeriving
      ImportQualifiedPost
      NamedFieldPuns
      OverloadedStrings
      RecordWildCards

    ghc-options: -threaded -fprof-auto