-- 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 2.0.1 -- | 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] -> 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.
--
-- Since 1.1.1
-- | Deprecated: use sqlSettings
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 :: String -> [EntityDef] -> Q [Dec]
-- | Save the EntityDefs passed in under the given name.
mkSave :: String -> [EntityDef] -> Q [Dec]
-- | Generate a DeleteCascade instance for the given
-- EntityDefs.
mkDeleteCascade :: MkPersistSettings -> [EntityDef] -> 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] -> Q [Dec]] -> [EntityDef] -> 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] -- | Automatically creates a valid PersistField instance for any -- datatype that has valid ToJSON and FromJSON instances. -- For a datatype T it generates instances similar to these: -- --
-- instance PersistField T where -- toPersistValue = PersistByteString . L.toStrict . encode -- fromPersistValue = (left T.pack) . eitherDecodeStrict' <=< fromPersistValue -- instance PersistFieldSql T where -- sqlType _ = SqlString --derivePersistFieldJSON :: 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 o -- in fromPersistValues $ map (name -> -- case HM.lookup name columns of -- Just v -> v -- Nothing -> PersistNull -- fromPersistValue x = Left $ Expected PersistMap, received: ++ show x -- sqlType _ = SqlString --persistFieldFromEntity :: MkPersistSettings -> EntityDef -> Q [Dec] packPTH :: String -> Text lensPTH :: (s -> a) -> (s -> b -> t) -> Lens s t a b instance Show SqlTypeExp instance Show EntityDefSqlTypeExp instance Lift SqlType instance Lift PersistUpdate instance Lift PersistFilter instance Lift FieldType instance Lift DBName instance Lift HaskellName instance (Lift' k, Lift' v) => Lift' (Map k v) instance Lift' a => Lift' [a] instance Lift' Text instance Lift' SqlTypeExp instance Lift' () instance Lift' EntityDef instance Lift' a => Lift' (Maybe a) instance Lift' SqlType instance Lift ForeignDef instance Lift PrimaryDef instance Lift UniqueDef instance Lift FieldDef instance Lift EntityDef instance Lift EmbedFieldDef instance Lift EmbedEntityDef instance Lift ReferenceDef instance Lift EntityDefSqlTypeExp instance Lift FieldSqlTypeExp instance Lift FieldsSqlTypeExp instance Lift SqlTypeExp