File: README.md

package info (click to toggle)
haskell-persistent-template 2.12.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 72 kB
  • sloc: haskell: 4; makefile: 2
file content (29 lines) | stat: -rw-r--r-- 1,399 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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!