-- | 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