-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Type-safe, non-relational, multi-backend persistence. -- -- This library provides just the general interface and helper functions. -- You must use a specific backend in order to make this useful. @package persistent-template @version 1.3.1.4 -- | This module provides utilities for creating backends. Regular users do -- not need to use this module. module Database.Persist.TH -- | Converts a quasi-quoted syntax into a list of entity definitions, to -- be used as input to the template haskell generation code (mkPersist). persistWith :: PersistSettings -> QuasiQuoter -- | Apply persistWith to upperCaseSettings. persistUpperCase :: QuasiQuoter -- | Apply persistWith to lowerCaseSettings. persistLowerCase :: QuasiQuoter -- | Same as persistWith, but uses an external file instead of a -- quasiquotation. persistFileWith :: PersistSettings -> FilePath -> Q Exp -- | Create data types and appropriate PersistEntity instances for -- the given EntityDefs. Works well with the persist quasi-quoter. mkPersist :: MkPersistSettings -> [EntityDef SqlType] -> Q [Dec] -- | Settings to be passed to the mkPersist function. data MkPersistSettings -- | Which database backend we're using. -- -- When generating data types, each type is given a generic version- -- which works with any backend- and a type synonym for the commonly used -- backend. This is where you specify that commonly used backend. mpsBackend :: MkPersistSettings -> Type -- | Create generic types that can be used with multiple backends. Good for -- reusable code, but makes error messages harder to understand. Default: -- True. mpsGeneric :: MkPersistSettings -> Bool -- | Prefix field names with the model name. Default: True. mpsPrefixFields :: MkPersistSettings -> Bool -- | Generate ToJSON/FromJSON instances for each model -- types. If it's Nothing, no instances will be generated. -- Default: -- --
--   Just EntityJSON
--       { entityToJSON = 'keyValueEntityToJSON
--       , entityFromJSON = 'keyValueEntityFromJSON
--       }
--   
mpsEntityJSON :: MkPersistSettings -> Maybe EntityJSON -- | Instead of generating normal field accessors, generator lens-style -- accessors. -- -- Default: False -- -- Since 1.3.1 mpsGenerateLenses :: MkPersistSettings -> Bool data EntityJSON EntityJSON :: Name -> Name -> EntityJSON -- | Name of the toJSON implementation for Entity a. entityToJSON :: EntityJSON -> Name -- | Name of the fromJSON implementation for Entity a. entityFromJSON :: EntityJSON -> Name -- | Create an MkPersistSettings with default values. mkPersistSettings :: Type -> MkPersistSettings -- | Use the SqlPersist backend. sqlSettings :: MkPersistSettings -- | Same as sqlSettings, but set mpsGeneric to -- False. -- -- Since 1.1.1 sqlOnlySettings :: MkPersistSettings -- | Creates a single function to perform all migrations for the entities -- defined here. One thing to be aware of is dependencies: if you have -- entities with foreign references, make sure to place those definitions -- after the entities they reference. mkMigrate :: Lift' a => String -> [EntityDef a] -> Q [Dec] -- | Save the EntityDefs passed in under the given name. mkSave :: String -> [EntityDef SqlType] -> Q [Dec] -- | Generate a DeleteCascade instance for the given -- EntityDefs. mkDeleteCascade :: MkPersistSettings -> [EntityDef a] -> Q [Dec] -- | Apply the given list of functions to the same EntityDefs. -- -- This function is useful for cases such as: -- --
--   >>> share [mkSave "myDefs", mkPersist sqlSettings] [persistLowerCase|...|]
--   
share :: [[EntityDef a] -> Q [Dec]] -> [EntityDef a] -> Q [Dec] -- | Automatically creates a valid PersistField instance for any -- datatype that has valid Show and Read instances. Can be -- very convenient for Enum types. derivePersistField :: String -> Q [Dec] -- | produce code similar to the following: -- -- instance PersistEntity e => PersistField e where toPersistValue = -- PersistMap $ zip columNames (map toPersistValue . toPersistFields) -- fromPersistValue (PersistMap o) = let columns = HM.fromList x in -- fromPersistValues $ map (name -> case HM.lookup name o of Just v -- -> case fromPersistValue v of Left e -> error e Right r -> r -- Nothing -> error $ Missing field: mappend unpack -- name) columnNames fromPersistValue x = Left $ Expected PersistMap, -- received: ++ show x sqlType _ = SqlString persistFieldFromEntity :: MkPersistSettings -> EntityDef a -> Q [Dec] packPTH :: String -> Text lensPTH :: (s -> a) -> (s -> b -> t) -> Lens s t a b instance Lift SqlType instance Lift PersistUpdate instance Lift PersistFilter instance Lift FieldType instance Lift DBName instance Lift HaskellName instance Lift' SqlTypeExp instance Lift' () instance Lift' a => Lift' (EntityDef a) instance Lift' a => Lift' (Maybe a) instance Lift' SqlType instance Lift ForeignDef instance Lift PrimaryDef instance Lift UniqueDef instance Lift' a => Lift (FieldDef a) instance Lift' a => Lift (EntityDef a) instance Lift SqlTypeExp