packages feed

kiroku-store-0.4.0.0: kiroku-store.cabal

cabal-version:   3.0
name:            kiroku-store
version:         0.4.0.0
synopsis:        High-performance PostgreSQL event store
description:
  Kiroku is a PostgreSQL-backed event store for Haskell applications. It
  provides append, read, link, lifecycle, transaction, subscription, consumer
  group, and observability primitives around immutable domain events.

homepage:        https://github.com/shinzui/kiroku
bug-reports:     https://github.com/shinzui/kiroku/issues
author:          Nadeem Bitar
maintainer:      nadeem@gmail.com
license:         BSD-3-Clause
build-type:      Simple
category:        Database, Eventing
extra-doc-files: CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/shinzui/kiroku.git

common common
  default-language:   GHC2024
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    OverloadedLabels
    OverloadedStrings

library
  import:          common
  exposed-modules:
    Kiroku.Store
    Kiroku.Store.Append
    Kiroku.Store.Causation
    Kiroku.Store.Connection
    Kiroku.Store.Effect
    Kiroku.Store.Effect.Resource
    Kiroku.Store.Error
    Kiroku.Store.Lifecycle
    Kiroku.Store.Link
    Kiroku.Store.Notification
    Kiroku.Store.Observability
    Kiroku.Store.Read
    Kiroku.Store.Settings
    Kiroku.Store.SQL
    Kiroku.Store.Subscription
    Kiroku.Store.Subscription.Effect
    Kiroku.Store.Subscription.EventPublisher
    Kiroku.Store.Subscription.Fsm
    Kiroku.Store.Subscription.Stream
    Kiroku.Store.Subscription.Types
    Kiroku.Store.Subscription.Worker
    Kiroku.Store.Transaction
    Kiroku.Store.Types

  other-modules:   Kiroku.Store.Subscription.CheckpointInventory.SQL
  build-depends:
    , aeson                 >=2.1  && <2.3
    , async                 >=2.2  && <2.3
    , base                  >=4.18 && <5
    , bytestring            >=0.11 && <0.13
    , containers            >=0.6  && <0.8
    , contravariant-extras  >=0.3  && <0.4
    , effectful-core        >=2.4  && <2.7
    , generic-lens          >=2.2  && <2.4
    , hasql                 >=1.10 && <1.11
    , hasql-notifications   >=0.2  && <0.3
    , hasql-pool            >=1.2  && <1.5
    , hasql-transaction     >=1.1  && <1.3
    , lens                  >=5.2  && <5.4
    , mmzk-typeid           >=0.6  && <0.8
    , mtl                   >=2.3  && <2.4
    , stm                   >=2.5  && <2.6
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , unliftio-core         >=0.2  && <0.3
    , uuid                  >=1.3  && <1.4
    , vector                >=0.13 && <0.14

  hs-source-dirs:  src

test-suite kiroku-store-test
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  hs-source-dirs: test
  other-modules:
    Test.CatchupDbErrorNoPrematureSwitch
    Test.Category
    Test.CategoryIdleNoSpin
    Test.Causation
    Test.Concurrency
    Test.ConsumerGroup
    Test.ConsumerGroupEffect
    Test.ConsumerGroupSql
    Test.EventTypeFilter
    Test.FailureInjection
    Test.Helpers
    Test.InterpreterHooks
    Test.NotifyGuard
    Test.Properties
    Test.PublisherCallbackResilience
    Test.PublisherIdleAdvance
    Test.PublisherRestartNoRebroadcast
    Test.ReadStream
    Test.StartupFailureSurfacing
    Test.StreamBridgeTermination
    Test.StreamNameLookup
    Test.SubscriptionCheckpointInventory
    Test.SubscriptionCheckpointInventoryMock
    Test.SubscriptionPauseResume
    Test.SubscriptionReconnect
    Test.SubscriptionRegistry
    Test.SubscriptionRetryDeadLetter
    Test.SubscriptionState
    Test.Transaction
    Test.TruncateBefore

  ghc-options:    -threaded -rtsopts -with-rtsopts=-N
  build-depends:
    , aeson                 >=2.1  && <2.3
    , async                 >=2.2  && <2.3
    , base                  >=4.18 && <5
    , bytestring            >=0.11 && <0.13
    , containers            >=0.6  && <0.8
    , contravariant-extras  >=0.3
    , directory
    , effectful-core        >=2.4  && <2.7
    , ephemeral-pg          >=0.2  && <0.3
    , generic-lens          >=2.2  && <2.4
    , hasql                 >=1.10 && <1.11
    , hasql-notifications   >=0.2  && <0.3
    , hasql-pool            >=1.2  && <1.5
    , hasql-transaction     >=1.1  && <1.3
    , hedgehog              >=1.4  && <1.8
    , hspec                 >=2.10 && <2.12
    , hspec-hedgehog        >=0.0  && <0.4
    , kiroku-store
    , kiroku-test-support
    , lens                  >=5.2  && <5.4
    , mmzk-typeid           >=0.6  && <0.8
    , stm                   >=2.5  && <2.6
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , uuid                  >=1.3  && <1.4
    , vector                >=0.13 && <0.14

benchmark kiroku-store-bench
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson                >=2.1  && <2.3
    , async                >=2.2  && <2.3
    , base                 >=4.18 && <5
    , deepseq              >=1.4
    , ephemeral-pg         >=0.2  && <0.3
    , generic-lens         >=2.2  && <2.4
    , hasql                >=1.10 && <1.11
    , hasql-pool           >=1.2  && <1.5
    , hasql-transaction    >=1.1  && <1.3
    , kiroku-store
    , kiroku-test-support
    , lens                 >=5.2  && <5.4
    , mmzk-typeid          >=0.6
    , tasty-bench          >=0.4
    , text                 >=2.0  && <2.2
    , time                 >=1.12 && <1.15
    , uuid                 >=1.3  && <1.4
    , vector               >=0.13 && <0.14

benchmark kiroku-shibuya-overhead
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        ShibuyaOverhead.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson                 >=2.1  && <2.3
    , base                  >=4.18 && <5
    , containers            >=0.6  && <0.8
    , effectful             >=2.4  && <2.7
    , effectful-core        >=2.4  && <2.7
    , ephemeral-pg          >=0.2  && <0.3
    , generic-lens          >=2.2  && <2.4
    , kiroku-store
    , lens                  >=5.2  && <5.4
    , shibuya-core          >=0.8  && <0.9
    , stm                   >=2.5  && <2.6
    , streamly              >=0.11
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , unliftio              >=0.2
    , unordered-containers  >=0.2  && <0.3
    , uuid                  >=1.3  && <1.4

benchmark kiroku-store-bench-explain
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Explain.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson         >=2.1  && <2.3
    , base          >=4.18 && <5
    , bytestring    >=0.11 && <0.13
    , directory     >=1.3
    , ephemeral-pg  >=0.2  && <0.3
    , filepath      >=1.4
    , generic-lens  >=2.2  && <2.4
    , hasql         >=1.10 && <1.11
    , hasql-pool    >=1.2  && <1.5
    , kiroku-store
    , lens          >=5.2  && <5.4
    , text          >=2.0  && <2.2
    , time          >=1.12 && <1.15
    , uuid          >=1.3  && <1.4
    , vector        >=0.13 && <0.14