cabal-version: 3.0

name: message-db
version: 0.1.0.0

synopsis: Client library for Message-DB installed in PostgreSQL.
description: See the readme on github for me info: https://github.com/Disco-Dave/message-db#readme

build-type: Simple
category: database, eventsourcing, eventstore
homepage: https://github.com/Disco-Dave/message-db
bug-reports:https://github.com/Disco-Dave/message-db/issues

author: David Burkett
maintainer: David Burkett

copyright: 2022 David Burkett
license: BSD-3-Clause
license-file: LICENSE

extra-source-files:
  README.md
  ChangeLog.md

common shared
  default-language: Haskell2010

  default-extensions:
    AllowAmbiguousTypes
    DeriveFunctor
    DeriveGeneric
    DerivingVia
    FlexibleContexts
    GeneralizedNewtypeDeriving
    LambdaCase
    NamedFieldPuns
    NumericUnderscores
    OverloadedStrings
    RankNTypes
    RecordWildCards
    ScopedTypeVariables
    StrictData
    TypeApplications

  ghc-options:
    -Weverything 
    -Wno-all-missed-specialisations 
    -Wno-identities
    -Wno-implicit-prelude 
    -Wno-missed-specialisations 
    -Wno-missing-deriving-strategies
    -Wno-missing-exported-signatures 
    -Wno-missing-import-lists 
    -Wno-missing-local-signatures 
    -Wno-monomorphism-restriction 
    -Wno-safe 
    -Wno-unsafe 

  if impl(ghc >= 8.10)
    ghc-options:
      -Wno-missing-safe-haskell-mode
      -Wno-prepositive-qualified-module

  if impl(ghc >= 9.2)
    ghc-options:
      -Wno-missing-kind-signatures

  build-depends:
    , base >=4.7 && <5

library
  import: shared

  hs-source-dirs: src

  exposed-modules:
    MessageDb.Functions
    MessageDb.Handlers
    MessageDb.Message
    MessageDb.Projection
    MessageDb.StreamName
    MessageDb.Subscription
    MessageDb.Subscription.FailedMessage
    MessageDb.Subscription.FailureStrategy
    MessageDb.Subscription.PositionStrategy
    MessageDb.Units

  build-depends:
    , aeson >=1.5 && <2.1
    , bytestring >=0.10 && <0.12
    , containers >=0.6 && <0.7
    , mtl >= 2.2 && <2.4
    , postgresql-simple >=0.6 && <0.7
    , safe-exceptions >=0.1 && <0.2
    , text >=1.2 && <2.1
    , time >=1.9 && <1.13
    , uuid >=1.3 && <1.4

test-suite message-db-test
  import: shared

  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: test

  other-modules:
      Examples.BankAccount
      Generators
      Generators.Message
      Generators.StreamName
      MessageDb.FunctionsSpec
      MessageDb.StreamNameSpec
      MessageDb.Subscription.FailureStrategySpec
      MessageDb.Subscription.PositionStrategySpec
      MessageDb.SubscriptionSpec
      Properties
      Spec
      TempMessageDb
      TestApp

  ghc-options: 
    -threaded 
    -rtsopts 
    -with-rtsopts=-N

  build-tool-depends:
    , hspec-discover:hspec-discover ==2.*

  build-depends:
    , aeson
    , bytestring
    , containers
    , exceptions >=0.10 && <0.11
    , hedgehog >=1.0 && <1.2
    , hspec >=2.7 && <2.11
    , hspec-hedgehog >=0.0 && <0.1
    , message-db
    , mtl
    , postgres-options >=0.2 && <0.3
    , postgresql-simple
    , resource-pool >=0.2 && <0.3
    , retry >=0.8 && <0.10
    , text
    , time
    , tmp-postgres >=1.34 && <1.35
    , typed-process >=0.2 && <0.3
    , unliftio >=0.2 && <0.3
    , unordered-containers >=0.2 && <0.3
    , uuid
    , vector >=0.12 && <0.13