-- | Defines type classes for 'Table's and 'Database's. -- -- All important class methods of these classes can be derived automatically using 'Generic's and GHC's DefaultSignatures extension, -- but you can override any method if necessary. -- -- To get started, see 'Table', 'Columnar', and 'Nullable'. module Database.Beam.Schema ( -- * Database construction -- $db-construction Database , DatabaseSettings , DatabaseEntity -- ** #entities# Database entities -- $entities , TableEntity -- * Table construction , Table(..), Beamable , defTblFieldSettings, pk , Columnar, C, Columnar', Nullable , TableField, fieldName , TableSettings, HaskellTable -- * 'Generic'-deriving mechanisms , defaultDbSettings -- ** Modifying the derived schema , DatabaseModification, EntityModification, FieldModification , withDbModification, withTableModification , dbModification, tableModification , modifyTable, fieldNamed , setEntityName , modifyEntityName, modifyTableFields -- * Types for lens generation , Lenses, LensFor(..) , module Database.Beam.Schema.Lenses ) where import Database.Beam.Schema.Tables import Database.Beam.Schema.Lenses -- $db-construction -- Types and functions to express database types and auto-generate name mappings -- for them. See the -- [manual](https://tathougies.github.io/beam/user-guide/databases.md) for more -- information. -- $entities -- Database entities represent things that can go into databases. Each entity in -- your database that you want to access from Haskell must be given a field in -- your database type. Each type of entity gets a particular entity tag, such as -- 'TableEntity' or 'DomainTypeEntity'