packages feed

pqi-0.0.1.0: pqi.cabal

cabal-version: 3.0
name: pqi
version: 0.0.1.0
category: Database, PostgreSQL
synopsis: Driver-agnostic interface to the PostgreSQL libpq API
description:
  @pqi@ reproduces the API surface of the @postgresql-libpq@ package, but
  reifies the connection (and its results) as a type class instead of a single
  concrete type. This lets callers program against one interface and pick an
  adapter at the type level:

  * @pqi-ffi@ — a thin adapter backed by the C @libpq@ library via
    @postgresql-libpq@.

  * @pqi-native@ — a pure-Haskell adapter that speaks the PostgreSQL wire
    protocol directly.

  This package ships only the interface: the typeclasses, types and a couple of connection-independent helpers.

homepage: https://github.com/nikita-volkov/pqi
bug-reports: https://github.com/nikita-volkov/pqi/issues
author: Nikita Volkov <nikita.y.volkov@mail.ru>
maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>
copyright: (c) 2026, Nikita Volkov
license: MIT
license-file: LICENSE
extra-doc-files:
  CHANGELOG.md
  LICENSE
  README.md

source-repository head
  type: git
  location: https://github.com/nikita-volkov/pqi

common base
  default-language: Haskell2010
  default-extensions:
    ApplicativeDo
    BangPatterns
    BinaryLiterals
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    DuplicateRecordFields
    EmptyDataDecls
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    LambdaCase
    LiberalTypeSynonyms
    MagicHash
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NoFieldSelectors
    NoImplicitPrelude
    NoMonomorphismRestriction
    NumericUnderscores
    OverloadedRecordDot
    OverloadedStrings
    ParallelListComp
    PatternGuards
    QuasiQuotes
    RankNTypes
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    StrictData
    TemplateHaskell
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
    UnboxedTuples
    ViewPatterns

common test
  import: base
  ghc-options:
    -threaded
    -with-rtsopts=-N

library
  import: base
  hs-source-dirs: src/library
  exposed-modules:
    Pqi

  other-modules:
    Pqi.UnescapeBytea

  build-depends:
    base >=4.11 && <5,
    bytestring >=0.10 && <0.13,
    ptr-peeker >=0.2 && <0.3,
    ptr-poker >=0.1 && <0.2,

test-suite pqi-test
  import: test
  type: exitcode-stdio-1.0
  hs-source-dirs: src/test
  main-is: Spec.hs
  build-depends:
    base >=4.11 && <5,
    bytestring >=0.10 && <0.13,
    hspec >=2.11 && <2.12,
    postgresql-libpq >=0.11 && <0.12,
    pqi,
    QuickCheck >=2.14 && <3,