beam-migrate-0.2.0.0: Database/Beam/Migrate/SQL/BeamExtensions.hs
-- | Beam extensions are optional functionality that do not conform to any
-- standard and may have wildly different interpretations across backends.
--
-- In spite of these drawbacks, these are provided for the purposes of
-- pragmatism and convenience.
module Database.Beam.Migrate.SQL.BeamExtensions where
import Database.Beam.Backend.SQL
import Database.Beam.Migrate.SQL.SQL92
import Database.Beam.Migrate.SQL.Tables
import Data.Text (Text)
-- | Used to designate that a field should provide a default auto-incrementing value.
--
-- Usage:
--
-- @
-- field "Key" int genericSerial
-- @
--
-- Then, when inserting into the table, you can use 'default_' to request the
-- database automatically assign a new value to the column. See
-- 'runInsertReturning' for another Beam extension that may help if you want
-- to know which value was assigned.
--
-- Note that this is only provided for convenience. Backends often implement
-- auto-incrementing keys wildly differently. Many have restrictions on where
-- 'genericSerial' may appear and may fail at run-time if these conditions
-- aren't met. Please refer to the backend of your choice for more
-- information.
class IsSql92ColumnSchemaSyntax syntax =>
IsBeamSerialColumnSchemaSyntax syntax where
genericSerial :: FieldReturnType 'False 'False syntax (SqlSerial Int) a => Text -> a