^T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Nonev  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgdef\]^_`abcQRSTUVWIJKLMNOPABCDEFGH<=>?@3456789:;XYZ[,-./012'()*+ !"#$%&  $   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefNone ghijklmnopqrstuvwxghijklmnopqrstuvwxghpqrsijklmnouvtwx ghijklmnopqrstuvwxNoneyWDefines how the names are created. The mk* functions correspond to the set* functions. B Functions mkNormal* define names of non-record constructor Field {BCreate name of the table for the datatype. Parameters: data name. |]Create name of the backend-specific key constructor for the datatype. Parameters: data name. }8Create name for phantom constructor used to parametrise FieldA. Parameters: data name, constructor name, constructor position. ~7Create name for phantom unique key used to parametrise KeyC. Parameters: data name, constructor name, unique constraint name. pCreate name of constructor for the unique key. Parameters: data name, constructor name, unique constraint name. Create name used by  persistNameV for the unique key. Parameters: data name, constructor name, unique constraint name. nCreate name of the constructor specific table. Parameters: data name, constructor name, constructor position. hCreate name of the db field for autokey. Parameters: data name, constructor name, constructor position. Create name of the field column in a database. Parameters: data name, constructor name, constructor position, field record name, field position. Create name of field constructor used in expressions. Parameters: data name, constructor name, constructor position, field record name, field position. Create name of selector (see Embeddedo) constructor used in expressions. Parameters: data name, constructor name, field record name, field position. Create field name used to refer to the it in settings for non-record constructors. Parameters: data name, constructor name, constructor position, field position. ~Create name of the field column in a database. Parameters: data name, constructor name, constructor position, field position. Create name of field constructor used in expressions. Parameters: data name, constructor name, constructor position, field position. Create name of selector (see Embedded\) constructor used in expressions. Parameters: data name, constructor name, field position. 1Naming style that is applied for all definitions BCodegenerator will create a function with this name that will run migrate/ for each non-polymorphic entity in definition Default style. Adds "Field" to each record field name.  Example: H data SomeData a = Normal Int | Record { bar :: Maybe String, asc :: a}  -- Generated code  data NormalConstructor  data RecordConstructor  instance PersistEntity where ! data Field (SomeData a) where 1 Normal0Field :: Field NormalConstructor Int 8 BarField :: Field RecordConstructor (Maybe String) + AscField :: Field RecordConstructor a  ... VCreates field names in Persistent fashion prepending constructor names to the fields.  Example: H data SomeData a = Normal Int | Record { bar :: Maybe String, asc :: a}  -- Generated code  data NormalConstructor  data RecordConstructor  instance PersistEntity where ! data Field (SomeData a) where , Normal0 :: Field NormalConstructor Int 9 RecordBar :: Field RecordConstructor (Maybe String) , RecordAsc :: Field RecordConstructor a  ... hCreates the shortest field names. It is more likely to lead in name conflicts than other naming styles.  Example: H data SomeData a = Normal Int | Record { bar :: Maybe String, asc :: a}  -- Generated code  data NormalConstructor  data RecordConstructor  instance PersistEntity where ! data Field (SomeData a) where , Normal0 :: Field NormalConstructor Int 3 Bar :: Field RecordConstructor (Maybe String) & Asc :: Field RecordConstructor a  ... #Creates the auxiliary structures.  Particularly, it creates GADT Fieldc data instance for referring to the fields in expressions and phantom types for data constructors.  The default names of auxiliary datatypes and names used in database are generated using the naming style and can be changed via configuration. e The datatypes and their generation options are defined via YAML configuration parsed by quasiquoter . CConverts quasiquoted settings into the datatype used by mkPersist. (Parses configuration stored in the file @ mkPersist suffixNamingStyle [groundhogFile|../groundhog.yaml|] /yz{|}~yz{|}~yz{|}~yz{|}~         !"#$%&''()*++,-./011234567899:;<==>?@ABCDDEFGHIJKKLMNOPQQRSTTUVWXYZ[[\]^_`abcdefghijklmnoopqrstuvwxyz{|}~groundhog-th-0.2.0Database.Groundhog.TH.SettingsDatabase.Groundhog.TH.CodeGenDatabase.Groundhog.THgroundhog-0.2.0Database.Groundhog.Generic psSubEmbeddedpsDbEmbeddedTypeNamepsDbEmbeddedFieldNamepsEmbeddedFieldNamePSEmbeddedFieldDef PSAutoKeyDefpsAutoKeyConstrNamepsAutoKeyIsDefPSUniqueKeyDefpsUniqueKeyNamepsUniqueKeyPhantomNamepsUniqueKeyConstrNamepsUniqueKeyDbNamepsUniqueKeyFieldspsUniqueKeyMakeEmbeddedpsUniqueKeyIsDef PSUniqueDef psUniqueName psUniqueTypepsUniqueFields PSFieldDef psFieldName psDbFieldName psDbTypeName psExprName psEmbeddedDefPSConstructorDef psConstrNamepsPhantomConstrNamepsDbConstrNamepsDbAutoKeyNamepsConstrFieldspsConstrUniques PSEmbeddedDefpsEmbeddedNamepsDbEmbeddedNamepsEmbeddedFields PSEntityDef psDataNamepsDbEntityName psAutoKey psUniqueKeyspsConstructorsTHUniqueKeyDefthUniqueKeyNamethUniqueKeyPhantomNamethUniqueKeyConstrNamethUniqueKeyDbNamethUniqueKeyFieldsthUniqueKeyMakeEmbeddedthUniqueKeyIsDef THUniqueDef thUniqueName thUniqueTypethUniqueFields THFieldDef thFieldName thDbFieldName thDbTypeName thExprName thFieldType thEmbeddedDefTHConstructorDef thConstrNamethPhantomConstrNamethDbConstrNamethDbAutoKeyNamethConstrFieldsthConstrUniques THEmbeddedDefthEmbeddedNamethEmbeddedConstructorNamethDbEmbeddedNamethEmbeddedTypeParamsthEmbeddedFields THAutoKeyDefthAutoKeyConstrNamethAutoKeyIsDef THEntityDef thDataNamethDbEntityName thAutoKey thUniqueKeys thTypeParamsthConstructorsPersistDefinitions definitionsmkEmbeddedPersistFieldInstance"mkEmbeddedPurePersistFieldInstancemkAutoKeyPersistFieldInstance&mkAutoKeyPrimitivePersistFieldInstancemkUniqueKeysIsUniqueInstancesmkUniqueKeysEmbeddedInstances!mkUniqueKeysPersistFieldInstances0mkUniqueKeysPrimitiveOrPurePersistFieldInstancesmkKeyEqShowInstancesmkEmbeddedInstancemkEntityPhantomConstructors#mkEntityPhantomConstructorInstancesmkEntityUniqueKeysPhantomsmkPersistEntityInstancemkEntityPersistFieldInstance"mkEntitySinglePersistFieldInstancemkEntityNeverNullInstancemkMigrateFunction NamingStylemkDbEntityNamemkEntityKeyName mkPhantomNamemkUniqueKeyPhantomNamemkUniqueKeyConstrNamemkUniqueKeyDbNamemkDbConstrNamemkDbConstrAutoKeyName mkDbFieldNamemkExprFieldNamemkExprSelectorNamemkNormalFieldNamemkNormalDbFieldNamemkNormalExprFieldNamemkNormalExprSelectorName CodegenConfig namingStylemigrationFunctiondefaultCodegenConfigsuffixNamingStylepersistentNamingStyleconciseNamingStyle mkPersist groundhog groundhogFile$fFromJSONPSAutoKeyDef$fFromJSONPSUniqueKeyDef$fFromJSONPSEmbeddedFieldDef$fFromJSONPSFieldDef$fFromJSONUniqueType$fFromJSONPSUniqueDef$fFromJSONPSConstructorDef$fFromJSONPSEmbeddedDef$fFromJSONPSEntityDef$fFromJSONEither$fFromJSONPersistDefinitions$fLiftPSAutoKeyDef$fLiftPSUniqueKeyDef$fLiftPSEmbeddedFieldDef$fLiftPSFieldDef$fLiftUniqueType$fLiftPSUniqueDef$fLiftPSConstructorDef$fLiftPSEmbeddedDef$fLiftPSEntityDef$fLiftPersistDefinitionsmkFromPersistValuesmkPurePersistFieldInstancemkEmbeddedInstance'mkToPurePersistValuesisDefaultKeyOneColumn getDefaultKey paramsContextparamsPureContext extractTypeisPrimfoldType hasFreeVars insideMaybespanMapplyEntitySettings mkUniqueKeyapplyAutoKeySettingsapplyConstructorSettingsapplyFieldSettingsapplyEmbeddedSettingsmkFieldsForUniqueKey notUniqueBy assertUniqueassertSpaceFreevalidateEntity validateFieldvalidateEmbeddedmkTHEntityDefWithmkTHEmbeddedDefWith firstLetterparseDefinitions mkEntityDecsmkEmbeddedDecs