packages feed

hamsql-0.7.0.0: src/Database/YamSql/Internal/Domain.hs

{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}

module Database.YamSql.Internal.Domain where

import Database.YamSql.Internal.Basic
import Database.YamSql.Internal.Check

-- | Domains are aliases of an existing SQL types, possibly with checks
data Domain = Domain
  { domainName        :: SqlName
  , domainDescription :: Text
  , domainType        :: SqlType
  , domainDefault     :: Maybe Text
  , domainChecks      :: Maybe [Check]
  } deriving (Generic, Show, Data)

instance FromJSON Domain where
  parseJSON = parseYamSql

instance ToJSON Domain where
  toJSON = toYamSqlJson

instance ToSqlIdPart Domain where
  sqlIdPart = domainName
  sqlIdPartType = const "DOMAIN"