name:                queryparser

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

-- A short (one-line) description of the package.
synopsis:            Analysis and parsing library for SQL queries.

-- A longer description of the package.
description:
            A library for parsing SQL queries into well-typed data structures,
            and producing easily quantifiable analyses from said data
            structures.
            .
            Currently this includes support for Hive, Vertica, and Presto
            dialects of SQL. Parsing for each dialect is provided in their own
            package, as queryparser-{dialect}

-- The license under which the package is released.
license:             MIT

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

-- The package author(s).
author:              Heli Wang, David Thomas, Matt Halverson

-- An email address to which users can send suggestions, bug reports, and
-- patches.
maintainer:          heli@uber.com

-- A copyright notice.
-- copyright:

category:            Database

build-type:          Simple

-- Extra files to be distributed with the package, such as examples or a
-- README.
extra-source-files:
                   README.md
                   CHANGELOG.md
                   FUTURE.md
                   stack.yaml

-- Constraint on the version of Cabal needed to build this package.
cabal-version:       >=1.10

flag development {
    description: Enable development level of strictness
    default: False
    manual: True
}

library
  -- Modules exported by the library.
  exposed-modules:     Database.Sql.Position
                     , Database.Sql.Helpers
                     , Database.Sql.Info
                     , Database.Sql.Type
                     , Database.Sql.Type.Names
                     , Database.Sql.Type.Query
                     , Database.Sql.Type.Schema
                     , Database.Sql.Type.Scope
                     , Database.Sql.Type.TableProps
                     , Database.Sql.Type.Unused
                     , Database.Sql.Pretty
                     , Database.Sql.Util.Columns
                     , Database.Sql.Util.Eval
                     , Database.Sql.Util.Eval.Concrete
                     , Database.Sql.Util.Joins
                     , Database.Sql.Util.Scope
                     , Database.Sql.Util.Tables
                     , Database.Sql.Util.Lineage.Table
                     , Database.Sql.Util.Lineage.ColumnPlus
                     , Database.Sql.Util.Schema

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

  default-extensions:  OverloadedStrings
                     , LambdaCase
                     , RecordWildCards
                     , TupleSections
                     , ConstraintKinds
                     , FlexibleInstances

  -- Other library packages from which modules are imported.
  build-depends:       base >=4.9 && <4.11
                     , text >=1.2 && <1.3
                     , bytestring
                     , containers
                     , semigroups >= 0.16
                     , mtl >= 2.2 && < 2.3
                     , parsec >= 3.1 && < 3.2
                     , pretty >= 1.1 && < 1.2
                     , aeson >= 0.8
                     , yaml >= 0.8 && < 0.9
                     , unordered-containers
                     , hashable
                     , QuickCheck
                     , fixed-list
                     , predicate-class

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


  ghc-options:         -Wall -Wno-redundant-constraints

  if flag(development)
    ghc-options:       -Werror

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

benchmark queryparser-bench
  type:                exitcode-stdio-1.0
  main-is:             Bench.hs
  build-depends:       base >=4.9 && <4.11
                     , queryparser
                     , criterion
                     , text
  hs-source-dirs:      bench

  ghc-options:         -Wall -with-rtsopts=-M5M

  if flag(development)
    ghc-options:       -Werror

  default-language:    Haskell2010
  default-extensions:  OverloadedStrings
                     , LambdaCase
                     , RecordWildCards
                     , TupleSections
                     , ConstraintKinds
                     , FlexibleInstances