packages feed

beam-automigrate-0.1.2.0: beam-automigrate.cabal

name:               beam-automigrate
version:            0.1.2.0
license-file:       LICENSE
build-type:         Simple
cabal-version:      >=1.10
author:             Alfredo Di Napoli, Andres Löh, Well-Typed LLP, and Obsidian Systems LLC
copyright:          2020 Obsidian Systems LLC
maintainer:         maintainer@obsidian.systems
category:           Database
license:            BSD3
license-file:       LICENSE
bug-reports:        https://github.com/obsidiansystems/beam-automigrate/issues
synopsis:           DB migration library for beam, targeting Postgres.
description:
  This package offers an alternative to @<https://hackage.haskell.org/package/beam-migrate beam-migrate>@
  and can be used to migrate a database between different versions of a Haskell schema. It doesn't depend
  on @beam-migrate@ if not transitively (@beam-postgres@ depends on it, for example).
  .
  <<https://i.imgur.com/xuPyUfg.gif>>

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

tested-with:        GHC ==8.6.5 || ==8.8.4 || ==8.10.2

library
  exposed-modules:
    Database.Beam.AutoMigrate
    Database.Beam.AutoMigrate.Annotated
    Database.Beam.AutoMigrate.BenchUtil
    Database.Beam.AutoMigrate.Compat
    Database.Beam.AutoMigrate.Diff
    Database.Beam.AutoMigrate.Generic
    Database.Beam.AutoMigrate.Postgres
    Database.Beam.AutoMigrate.Schema.Gen
    Database.Beam.AutoMigrate.Types
    Database.Beam.AutoMigrate.Util
    Database.Beam.AutoMigrate.Validity

  hs-source-dirs:     src
  build-depends:
      aeson                 >=1.4.4    && <1.5
    , base                  >=4.9      && <5
    , beam-core             >=0.9      && <0.10
    , beam-postgres         >=0.5      && <0.6
    , bytestring            >=0.10.8.2 && <0.12.0.0
    , containers            >=0.5.9.2  && <0.8.0.0
    , deepseq               >=1.4.4    && <1.6
    , dlist                 >=0.8.0    && <0.10
    , microlens             >=0.4.10   && <0.6
    , mtl                   >=2.2.2    && <2.4
    , postgresql-simple     >=0.5.4    && <0.7.0.0
    , pretty-simple         >=2.2.0    && <3.3
    , QuickCheck            >=2.13     && <2.15
    , quickcheck-instances  >=0.3      && <0.4
    , scientific            >=0.3.6    && <0.5
    , splitmix              >=0.0.3    && <0.1
    , string-conv           >=0.1.2    && <0.3
    , text                  >=1.2.0.0  && <1.3.0.0
    , time                  >=1.8.0    && <2
    , transformers          >=0.5.6    && <0.7
    , uuid                  >=1.3      && <1.4
    , vector                >=0.12.0.3 && <0.13.0.0

  default-language:   Haskell2010
  default-extensions:
    DataKinds
    FlexibleInstances
    GADTs
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    OverloadedStrings
    ScopedTypeVariables
    TypeApplications
    TypeFamilies

  ghc-options:        -Wall

  if flag(werror)
    ghc-options: -Werror

test-suite beam-automigrate-tests
  type:               exitcode-stdio-1.0
  hs-source-dirs:     tests
  main-is:            Main.hs
  other-modules:      Test.Database.Beam.AutoMigrate.Arbitrary
  build-depends:
      base
    , beam-automigrate
    , containers
    , pretty-simple
    , QuickCheck
    , tasty
    , tasty-quickcheck
    , text

  default-language:   Haskell2010
  default-extensions: OverloadedStrings

test-suite beam-automigrate-integration-tests
  type:               exitcode-stdio-1.0
  hs-source-dirs:     integration-tests tests
  main-is:            Main.hs
  other-modules:      Test.Database.Beam.AutoMigrate.Arbitrary
  build-depends:
      base
    , beam-automigrate
    , containers
    , postgresql-simple
    , pretty-simple
    , QuickCheck
    , tasty
    , tasty-quickcheck
    , text
    , tmp-postgres       >=1.31.0.1 && <1.35.0.0

  default-language:   Haskell2010
  default-extensions:
    OverloadedStrings
    ScopedTypeVariables

  if !flag(integration-tests)
    buildable: False

executable beam-automigrate-examples
  hs-source-dirs:     examples
  main-is:            Main.hs
  other-modules:
    Example
    ForeignKeys
    -- SubDatabases -- Sub-database support hasn't been added to beam yet. See https://github.com/adinapoli/beam/commit/a00ea815e74aea666af840dbe75571b8165ca506

  build-depends:
      aeson
    , base
    , beam-automigrate
    , beam-core
    , beam-postgres
    , bytestring
    , postgresql-simple
    , text
    , time

  default-language:   Haskell2010
  default-extensions:
    DataKinds
    DeriveGeneric
    FlexibleContexts
    FlexibleInstances
    MultiParamTypeClasses
    OverloadedStrings
    StandaloneDeriving
    TypeApplications
    TypeFamilies

  ghc-options:        -Wall -O2 -rtsopts

  if flag(werror)
    ghc-options: -Werror

  if flag(ghcipretty)
    build-depends: pretty-simple

executable beam-automigrate-large-migration-test
  hs-source-dirs:     large-migration-test
  main-is:            Main.hs
  build-depends:
      base
    , beam-automigrate
    , beam-postgres
    , containers
    , postgresql-simple
    , time

  default-language:   Haskell2010
  default-extensions: OverloadedStrings
  ghc-options:        -Wall -O2 -rtsopts

benchmark beam-automigrate-bench
  type:             exitcode-stdio-1.0
  hs-source-dirs:   bench
  main-is:          Main.hs
  build-depends:
      base
    , beam-automigrate
    , beam-postgres
    , bytestring
    , containers
    , criterion
    , deepseq
    , postgresql-simple
    , QuickCheck
    , splitmix

  default-language: Haskell2010
  ghc-options:      -Wall -O2 -rtsopts

executable readme
  build-depends:
      base
    , beam-automigrate
    , beam-core
    , beam-postgres
    , gargoyle-postgresql-connect
    , postgresql-simple
    , resource-pool
    , text
  default-language: Haskell2010
  main-is: README.lhs
  ghc-options: -Wall -optL -q

flag werror
  description: Enable -Werror during development
  default:     False
  manual:      True

flag ghcipretty
  description: Enable pretty-show for pretty-printing purposes
  default:     False
  manual:      True

flag integration-tests
  description: Enable integration tests that talks to a Postgres DB.
  default:     False
  manual:      True

source-repository head
  type: git
  location: https://github.com/obsidiansystems/beam-automigrate