persistent-template-2.12.0.0/LICENSE0000644000000000000000000000207514016256631015146 0ustar0000000000000000Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. persistent-template-2.12.0.0/Setup.lhs0000755000000000000000000000016214016256631015747 0ustar0000000000000000#!/usr/bin/env runhaskell > module Main where > import Distribution.Simple > main :: IO () > main = defaultMain persistent-template-2.12.0.0/persistent-template.cabal0000644000000000000000000000176014030625706021135 0ustar0000000000000000name: persistent-template version: 2.12.0.0 license: MIT license-file: LICENSE author: Michael Snoyman maintainer: Michael Snoyman , Greg Weber synopsis: Type-safe, non-relational, multi-backend persistence. description: Hackage documentation generation is not reliable. For up to date documentation, please see: . category: Database, Yesod stability: Stable cabal-version: >= 1.10 build-type: Simple homepage: http://www.yesodweb.com/book/persistent bug-reports: https://github.com/yesodweb/persistent/issues extra-source-files: ChangeLog.md README.md library build-depends: base >= 4.10 && < 5 exposed-modules: ghc-options: -Wall default-language: Haskell2010 source-repository head type: git location: git://github.com/yesodweb/persistent.git persistent-template-2.12.0.0/ChangeLog.md0000644000000000000000000001500214027431317016302 0ustar0000000000000000## Unreleased changes ## 2.12.0.0 * Decomposed `HaskellName` into `ConstraintNameHS`, `EntityNameHS`, `FieldNameHS`. Decomposed `DBName` into `ConstraintNameDB`, `EntityNameDB`, `FieldNameDB` respectively. [#1174](https://github.com/yesodweb/persistent/pull/1174) * [#1214](https://github.com/yesodweb/persistent/pull/1214): * This package was asborbed into `persistent` itself. ## 2.9.1.0 * [#1145](https://github.com/yesodweb/persistent/pull/1148) * Fix a bug where the `SqlType` for a shared primary key was being incorrectly set to `SqlString` instead of whatever the target primary key sql type was. * [#1151](https://github.com/yesodweb/persistent/pull/1151) * Automatically generate `SymbolToField` instances for datatypes, allowing `OverloadedLabels` to be used with the `EntityField` type. ## 2.9 * Always use the "stock" strategy when deriving Show/Read for keys [#1106](https://github.com/yesodweb/persistent/pull/1106) * This fixes a regression from 2.8.0, which started using the `newtype` strategy when deriving `Show`/`Read` for keys * In practice, this means that from 2.8.0–2.8.3.1, for the following schema: ``` Person name Text CustomPrimary anInt Int Primary anInt name Text ``` `PersonKey 1` would show as `"SqlBackendKey {unSqlBackendKey = 1}"` and `CustomPrimaryKey 1` would show as `"1"` This was generally poor for debugging and logging, since all tables keys would print the same. For Persistent < 2.8.0 and > 2.8.3.1, they instead will show as: `"PersonKey {unPersonKey = SqlBackendKey {unSqlBackendKey = 1}}"` and `"CustomPrimaryKey {unCustomPrimaryKey = 1}"` This could be a breaking change if you have used `Show` on a key, wrote that string into some persistent storage like a database, and are trying to `Read` it back again later. ## 2.8.3.1 * Allow aeson 1.5. [#1085](https://github.com/yesodweb/persistent/pull/1085) ## 2.8.3.0 * Add `Lift` instances for the cascade types. [#1060](https://github.com/yesodweb/persistent/pull/1060) * Use `DeriveLift` to implement all `Lift` instances. Among other benefits, this provides implementations of `liftTyped` on `template-haskell-2.16` (GHC 8.10) or later. [#1064](https://github.com/yesodweb/persistent/pull/1064) ## 2.8.2.3 * Require extensions in a more friendly manner. [#1030](https://github.com/yesodweb/persistent/pull/1030) * Specify a strategy for all deriving clauses, which avoids the `-Wmissing-deriving-strategy` warning introduced in GHC 8.8.2. [#1030](https://github.com/yesodweb/persistent/pull/1030) ## 2.8.2.2 * Fix the `mkPersist` function to not require importing the classes explicitly. [#1027](https://github.com/yesodweb/persistent/pull/1027) ## 2.8.2.1 * Fix the test-suite for persistent-template. [#1023](https://github.com/yesodweb/persistent/pull/1023) ## 2.8.2 * Add `fieldError` to the export list of `Database.Persist.TH` [#1008](https://github.com/yesodweb/persistent/pull/1008) ## 2.8.1 * Let the user pass instances that will be derived for record and for key types (https://github.com/yesodweb/persistent/pull/990 ## 2.8.0.1 * Small optimization/code cleanup to generated Template Haskell code size, by slimming the implementation of to/fromPersistValue for Entities. [#1014](https://github.com/yesodweb/persistent/pull/1014) ## 2.8.0 * Reduces the amount of code generated by Template Haskell. The amount of code generated for a certain function was O(N^2) with respect to the number of fields on a given Entity. This change shows dramatic improvements in benchmarks for compiling Persistent models. [#]() * Drops support for GHC 8.0, so that `DerivingStrategies` can be used by `persistent-template` * `persistent-template` now requires `DerivingStrategies`, `GeneralizedNewtypeDeriving`, and `StandaloneDeriving` to be enabled in the file where Persistent entities are created * Fixes a long-standing issue where persistent-template would fail when `DeriveAnyClass` was enabled (See #578) * [#1002](https://github.com/yesodweb/persistent/pull/1002) ## 2.7.4 * Remove an overlapping instance for `Lift a`. [#998](https://github.com/yesodweb/persistent/pull/998) ## 2.7.3 * Update module documentation for `Database.Persist.TH` to better describe the purpose of the module [#968](https://github.com/yesodweb/persistent/pull/968) * Support template-haskell-2.15 [#959](https://github.com/yesodweb/persistent/pull/959) ## 2.7.2 * Expose the knot tying logic of `parseReferences` so that users can build migrations from independently define entities at runtime [#932](https://github.com/yesodweb/persistent/pull/932) ## 2.7.1 * Add the `mkEntityDefList` function to work around [#902](https://github.com/yesodweb/persistent/issues/902). [#904](https://github.com/yesodweb/persistent/pull/904) ## 2.7.0 * Depends on `persistent-2.10.0` which provides the `OnlyOneUniqueKey` and `AtLeastOneUniqueKey` classes. Automatically generates instances for these classes based on how many unique keys the entity definition gets. This changes requires `UndecidableInstances` to be enabled on each module that generates entity definitions. [#885](https://github.com/yesodweb/persistent/pull/885) * Removed deprecated `sqlOnlySettings`. Please use `sqlSettings` instead. [#894](https://github.com/yesodweb/persistent/pull/894) ## 2.6.0 * [persistent#846](https://github.com/yesodweb/persistent/pull/846): Improve error message when marshalling fails * [persistent#826](https://github.com/yesodweb/persistent/pull/826): Change `Unique` derive `Show` ## 2.5.4 * [persistent#778](https://github.com/yesodweb/persistent/issues/778): Add `persistManyFileWith`. ## 2.5.3.1 * Slight improvement to the error message when a Persistent field can't be parsed from database results ## 2.5.3 * Exposed `parseReferences` to allow custom QuasiQuoters ## 2.5.2 * Fix incorrect `ToJSON`/`FromJSON` instance generation for generic backends ## 2.5.1.6 Allow non-null self-references in a list ## 2.5.1.4 * Allow composite Primary keys for tables that contain nullable fields. * Support foreign keys to non-integer ids ## 2.5.1.3 * fix GHC 7.8 bug when a field name is "type" ## 2.5.1.2 * fix a bad Eq instance /= definition for Key when mpsGenetric=True ## 2.5.0.1 * workaround TH bug in GHC 7.10 ## 2.5 * read/write typeclass split ## 2.1.6 * aeson 0.11 * transformers 0.5 ## 2.1.4 support http-api-data for url serialization ## 2.1.3.3 By default explicitly use Int64 for foreign key references. This avoids confusion on a 32 bit system. ## 2.1.3.1 Support foreign key references to composite primary keys ## 2.1.0.1 Support for monad-control 1.0 persistent-template-2.12.0.0/README.md0000644000000000000000000000256714027431317015424 0ustar0000000000000000# Begone! This package was absorbed into `persistent` with the 2.12.0.1 release. ## persistent-template Provides Template Haskell helpers for persistent. For more information, see [the chapter in the Yesod book](http://www.yesodweb.com/book/persistent). ### code organization The TH.hs module contains code generators. persistent-template uses `EntityDef`s that it gets from the quasi-quoter. The quasi-quoter is in persistent Quasi.hs Similarly many of the types come from the persistent library ### Development tips To get a better idea of what code you're generating, you can output the content of Template Haskell expressions to a file: ``` stack test persistent-template --ghc-options='-ddump-splices -ddump-to-file' ``` The output will be in the `.stack-work` directory. The exact path will depend on your specific setup, but if you search for files ending in `.dump-splices` you'll find the output (`find .stack-work -type f -name '*.dump-splices'`) If you make changes to the generated code, it is highly recommended to compare the output with your changes to output from `master` (even better if this diff is included in your PR!). Seemingly small changes can have dramatic changes on the generated code. For example, embedding an `EntityDef` in a function that was called for every field of that `Entity` made the number of generated lines O(N^2) for that function—very bad!