Persistent module discover utilities.
This package provides an executable for discovering Persistent model definition files, as well as a library function to glob all persistent model files. Please see the README on GitHub at https://github.com/parsonsmatt/persistent-discover#readme
persistent-discover
Supports automatic discovery of your persistent
models.
As an executable
Let's say you've got a ton of persistent
database models, all defined in a module hierarchy like this:
src/
Models/
Foo.hs
Bar.hs
Baz.hs
Blargh.hs
What.hs
OhNo.hs
If you're using persistent
to automatically generate migrations, you'll want to have all the [EntityDef]
in scope from each module. You can do that by importing each module that defines models and calling $(discoverEntities)
, introduced in persistent-2.13
.
But you may forget to import a module.
This utility imports all the modules defined in the current directory and sub-directories, and then it calls $(discoverEntities)
for you.
To use it, place the following command in a file, located in the same directory that your Haskell modules are in:
{-# OPTIONS_GHC -F -pgmF persistent-discover #-}
Let's say we put that in src/Models/All.hs
. This generates a module Models.All
that exports a single item: allEntities
, which is a [EntityDef]
and can be used by migrateModels
to properly perform migrations.
You'll need to add persistent-discover
to the build-tool-depends
on your cabal file for this to work.