servant-csharp-0.0.8.0: src/CS/JsonDotNet/Internal/Types.hs
module CS.JsonDotNet.Internal.Types where
import Data.Aeson
import Data.Text
data FieldType = FInteger
| FNumber
| FString
| FBool
| FDay
| FUTCTime
| FEnum Text [Value]
| FObject Text [(Text, FieldType)]
| FList FieldType
| FNullable FieldType
| FRefObject Text
| FRefEnum Text
| FRefPrim Text FieldType
deriving Show
isFEnum :: FieldType -> Bool
isFEnum (FEnum _ _) = True
isFEnum _ = False
isFPrim :: FieldType -> Bool
isFPrim FString = True
isFPrim FInteger = True
isFPrim FNumber = True
isFPrim FBool = True
isFPrim FDay = True
isFPrim FUTCTime = True
isFPrim _ = False
isFObj :: FieldType -> Bool
isFObj (FObject _ _) = True
isFObj _ = False
data CCate = CVal | CRef | CSt deriving Show
nullable :: FieldType -> CCate
nullable FInteger = CVal
nullable FNumber = CVal
nullable FString = CRef
nullable FBool = CVal
nullable FDay = CVal
nullable FUTCTime = CVal
nullable (FEnum _ _) = CSt
nullable (FObject _ _) = CSt
nullable (FList _) = CRef
nullable (FNullable _) = CRef
nullable (FRefObject _) = CVal
nullable (FRefEnum _) = CVal
nullable (FRefPrim _ t) = nullable t
data ConverterType = NoConv
| DayConv
| EnumConv
| ItemConv ConverterType
deriving Show