packages feed

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

-- This file is part of HamSql
--
-- Copyright 2014-2016 by it's authors.
-- Some rights reserved. See COPYING, AUTHORS.
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}

module Database.YamSql.Internal.Type where

import Database.YamSql.Internal.Basic

data Type = Type
  { typeName        :: SqlName
  , typeDescription :: Text
  , typeElements    :: [TypeElement]
  } deriving (Generic, Show, Data)

instance FromJSON Type where
  parseJSON = parseYamSql

instance ToJSON Type where
  toJSON = toYamSqlJson

data TypeElement = TypeElement
  { typeelementName :: SqlName
  , typeelementType :: SqlType
  } deriving (Generic, Show, Data)

instance FromJSON TypeElement where
  parseJSON = parseYamSql

instance ToJSON TypeElement where
  toJSON = toYamSqlJson

instance ToSqlIdPart Type where
  sqlIdPart = typeName
  sqlIdPartType = const "TYPE"