module Database.Peregrin.Metadata
( Identifier(..)
, QIdentifier(..)
, Schema(..)
) where
import Data.Text (Text)
import Database.PostgreSQL.Simple.ToField (ToField(..))
import qualified Database.PostgreSQL.Simple.Types as PST
data Identifier = Identifier Text
instance ToField Identifier where
toField (Identifier i) = toField $ PST.Identifier i
data QIdentifier = QIdentifier Schema Text
instance ToField QIdentifier where
toField (QIdentifier schema i) = toField $ PST.QualifiedIdentifier (Just $ schemaToText schema) i
data Schema = DefaultSchema
| NamedSchema Text
instance ToField Schema where
toField schema = toField $ Identifier $ schemaToText schema
schemaToText :: Schema -> Text
schemaToText DefaultSchema = "public"
schemaToText (NamedSchema schemaId) = schemaId