beam-migrate-0.6.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.Types
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" 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 (BeamMigrateSqlBackend be) =>
BeamSqlBackendHasSerial n be where
genericSerial :: FieldReturnType 'True 'False be (SqlSerial n) a => Text -> a