{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} -- | -- Module : Database.PostgreSQL.Entity.Internal.Unsafe -- Copyright : © Clément Delafargue, 2018 -- Théophile Choutri, 2021 -- Koz Ross, 2021 -- License : MIT -- Maintainer : theophile@choutri.eu -- Stability : Experimental -- -- Contains the internals of several key types. -- -- = Note -- -- By using these directly, you run the risk of violating internal invariants, -- or making representational changes in incompatible ways. This API is not -- stable, and is not subject to the PVP. Use at your own risk -- -- If at all possible, instead use the API provided by -- 'Database.PostgreSQL.Entity.Types'. module Database.PostgreSQL.Entity.Internal.Unsafe ( Field (..) ) where import Data.Kind import Data.String import Data.Text (Text) import GHC.TypeLits -- | A wrapper for table fields. -- -- @since 0.0.1.0 data Field = Field Text (Maybe Text) deriving stock (Eq, Show) -- | Using the Overloaded String syntax for Field names is forbidden. instance ForbiddenIsString => IsString Field where fromString = error "You cannot pass a field as a string. Please use the `field` quasi-quoter instead." type family ForbiddenIsString :: Constraint where ForbiddenIsString = TypeError ( 'Text "🚫 You cannot pass a Field name as a string." ':$$: 'Text "Please use the `field` quasi-quoter instead." )