Hoogle Search

Within LTS Haskell 22.20 (ghc-9.6.4)

Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.

  1. mkPersist :: MkPersistSettings -> [UnboundEntityDef] -> Q [Dec]

    persistent Database.Persist.TH

    Create data types and appropriate PersistEntity instances for the given UnboundEntityDefs. This function should be used if you are only defining a single block of Persistent models for the entire application. If you intend on defining multiple blocks in different fiels, see mkPersistWith which allows you to provide existing entity definitions so foreign key references work. Example:

    mkPersist sqlSettings [persistLowerCase|
    User
    name    Text
    age     Int
    
    Dog
    name    Text
    owner   UserId
    
    |]
    
    Example from a file:
    mkPersist sqlSettings $(persistFileWith lowerCaseSettings "models.persistentmodels")
    
    For full information on the QuasiQuoter syntax, see Database.Persist.Quasi documentation.

  2. mkPersistSettings :: Type -> MkPersistSettings

    persistent Database.Persist.TH

    Create an MkPersistSettings with default values.

  3. mkPersistWith :: MkPersistSettings -> [EntityDef] -> [UnboundEntityDef] -> Q [Dec]

    persistent Database.Persist.TH

    Like mkPersist, but allows you to provide a [EntityDef] representing the predefined entities. This function will include those EntityDef when looking for foreign key references. You should use this if you intend on defining Persistent models in multiple files. Suppose we define a table Foo which has no dependencies.

    module DB.Foo where
    
    mkPersistWith sqlSettings [] [persistLowerCase|
    Foo
    name    Text
    |]
    
    Then, we define a table Bar which depends on Foo:
    module DB.Bar where
    
    import DB.Foo
    
    mkPersistWith sqlSettings [entityDef (Proxy :: Proxy Foo)] [persistLowerCase|
    Bar
    fooId  FooId
    |]
    
    Writing out the list of EntityDef can be annoying. The $(discoverEntities) shortcut will work to reduce this boilerplate.
    module DB.Quux where
    
    import DB.Foo
    import DB.Bar
    
    mkPersistWith sqlSettings $(discoverEntities) [persistLowerCase|
    Quux
    name     Text
    fooId    FooId
    barId    BarId
    |]
    

  4. data MkPersistSettings

    persistent Database.Persist.TH

    Settings to be passed to the mkPersist function.

Page 1 of 1