packages feed

hasql-check-0.5.0.0: hasql-check.cabal

cabal-version:   3.0
name:            hasql-check
version:         0.5.0.0
synopsis:        Check hasql-th statements against a live PostgreSQL schema
description:
  Finds the hasql-th quasiquotes in Haskell source files and PREPAREs each
  statement against a live PostgreSQL database, so statements that no longer
  match the schema fail in CI rather than at runtime.

category:        Database, Development
homepage:        https://github.com/kronor-io/hasql-check
bug-reports:     https://github.com/kronor-io/hasql-check/issues
license:         BSD-3-Clause
license-file:    LICENSE
author:          Pranay Sashank, Jose Lorenzo Rodriguez
maintainer:      lorenzo@kronor.io, pranay.sashank@kronor.io
copyright:       2021-2026 Kronor
build-type:      Simple
tested-with:     GHC ==9.10.3 || ==9.12.4 || ==9.14.1
extra-doc-files:
  ChangeLog.md
  README.md

source-repository head
  type:     git
  location: https://github.com/kronor-io/hasql-check

flag lint
  description: lint
  manual:      True
  default:     False

flag kronor-syntax
  description:
    Accept the hasql-th extensions of Kronor's forks (Haskell targets and
    Haskell param fields). Needs Kronor's fork of postgresql-syntax.

  manual:      True
  default:     False

library
  exposed-modules:
    Hasql.Check
    Hasql.Check.Annotate
    Hasql.Check.Compile
    Hasql.Check.Finding
    Hasql.Check.Inferred
    Hasql.Check.Inferred.Quote
    Hasql.Check.Inferred.TH
    Hasql.Check.Lexer
    Hasql.Check.Nullability
    Hasql.Check.Parser
    Hasql.Check.Quoter
    Hasql.Check.TH
    Hasql.Check.Types

  hs-source-dirs:     src
  default-language:   GHC2021
  default-extensions:
    ApplicativeDo
    BangPatterns
    BinaryLiterals
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveAnyClass
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    DoAndIfThenElse
    DuplicateRecordFields
    EmptyDataDecls
    EmptyDataDeriving
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NoImplicitPrelude
    OverloadedRecordDot
    OverloadedStrings
    PartialTypeSignatures
    PatternGuards
    PatternSynonyms
    PolyKinds
    QuasiQuotes
    RankNTypes
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    StrictData
    TupleSections
    TypeApplications
    TypeFamilies
    TypeSynonymInstances
    ViewPatterns

  ghc-options:
    -Wall -Wcompat -Widentities -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
    -freverse-errors -fhide-source-paths

  if flag(lint)
    ghc-options: -Werror

  build-depends:
    , aeson              >=2.0  && <2.4
    , array              >=0.5  && <0.6
    , base               >=4.20 && <4.23
    , bytestring         >=0.11 && <0.13
    , containers         >=0.6  && <0.9
    , directory          >=1.3  && <1.4
    , hasql              >=2.0  && <2.1
    , hasql-th           >=0.5  && <0.6
    , mtl                >=2.2  && <2.4
    , postgresql-syntax  >=0.5  && <0.6
    , pqi                >=1.1  && <1.2
    , pqi-ffi            >=1.0  && <1.1
    , scientific         >=0.3  && <0.4
    , template-haskell   >=2.18 && <2.25
    , text               >=2.0  && <2.2
    , time               >=1.11 && <1.17
    , uuid               >=1.3  && <1.4
    , vector             >=0.12 && <0.14

  if flag(kronor-syntax)
    cpp-options: -DKRONOR_SYNTAX

  build-tool-depends:
    , alex:alex    >=3.2  && <4
    , happy:happy  >=1.20 && <3

executable hasql-check
  main-is:            Main.hs
  hs-source-dirs:     app
  default-language:   GHC2021
  default-extensions:
    ApplicativeDo
    BangPatterns
    BinaryLiterals
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveAnyClass
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    DoAndIfThenElse
    DuplicateRecordFields
    EmptyDataDecls
    EmptyDataDeriving
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NoImplicitPrelude
    OverloadedRecordDot
    OverloadedStrings
    PartialTypeSignatures
    PatternGuards
    PatternSynonyms
    PolyKinds
    QuasiQuotes
    RankNTypes
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    StrictData
    TupleSections
    TypeApplications
    TypeFamilies
    TypeSynonymInstances
    ViewPatterns

  ghc-options:
    -Wall -Wcompat -Widentities -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
    -freverse-errors -fhide-source-paths

  build-depends:
    , base         >=4.20 && <4.23
    , bytestring   >=0.11 && <0.13
    , directory    >=1.3  && <1.4
    , filepath     >=1.4  && <1.6
    , hasql        >=2.0  && <2.1
    , hasql-check
    , pqi          >=1.1  && <1.2
    , pqi-ffi      >=1.0  && <1.1
    , text         >=2.0  && <2.2

  if flag(lint)
    ghc-options: -Werror

-- The executable tests start their own PostgreSQL server, so initdb, pg_ctl
-- and psql must be on PATH.
test-suite hasql-check-test
  type:               exitcode-stdio-1.0
  main-is:            Main.hs
  hs-source-dirs:     test
  default-language:   GHC2021
  default-extensions:
    BlockArguments
    DataKinds
    LambdaCase
    OverloadedStrings

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

  if flag(lint)
    ghc-options: -Werror

  build-depends:
    , base              >=4.20 && <4.23
    , bytestring        >=0.11 && <0.13
    , directory         >=1.3  && <1.4
    , filepath          >=1.4  && <1.6
    , hasql             >=2.0  && <2.1
    , hasql-check
    , pqi-ffi           >=1.0  && <1.1
    , process           >=1.6  && <1.7
    , sydtest           >=0.19 && <0.34
    , template-haskell  >=2.18 && <2.25
    , temporary         >=1.3  && <1.4
    , text              >=2.0  && <2.2
    , vector            >=0.12 && <0.14

  build-tool-depends: hasql-check:hasql-check

  if flag(kronor-syntax)
    cpp-options: -DKRONOR_SYNTAX