added Aeson instances and JSON datatypes
This commit is contained in:
parent
f41f84736a
commit
dd2d653459
3 changed files with 62 additions and 3 deletions
46
src/Data/Aeson/TickLeiste.hs
Normal file
46
src/Data/Aeson/TickLeiste.hs
Normal file
|
@ -0,0 +1,46 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Data.Aeson.TickLeiste
|
||||
( KnownPlayer (..),
|
||||
UnknownPlayer (..),
|
||||
JSONRequest (..),
|
||||
JSONEvent (..),
|
||||
)
|
||||
where
|
||||
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import qualified Data.Text as T
|
||||
import Data.TickLeiste
|
||||
import qualified Data.UUID as U
|
||||
|
||||
$(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "tickType", contentsFieldName = "tickValue"}} ''Tick)
|
||||
|
||||
data KnownPlayer = KnownPlayer {kplayerUUID :: U.UUID, kplayerName :: Maybe T.Text}
|
||||
deriving (Show)
|
||||
|
||||
$(deriveJSON defaultOptions {fieldLabelModifier = drop 1} ''KnownPlayer)
|
||||
|
||||
data UnknownPlayer = UnknownPlayer {uplayerName :: T.Text}
|
||||
deriving (Show)
|
||||
|
||||
$(deriveJSON defaultOptions {fieldLabelModifier = drop 1} ''UnknownPlayer)
|
||||
|
||||
data JSONRequest
|
||||
= SetPlayerTickR {sptRplayer :: KnownPlayer, sptRtick :: Tick}
|
||||
| AddPladerTickR {aptRplayer :: UnknownPlayer, aptRtick :: Tick}
|
||||
| InitializeTickLeisteR {itlRtickLeiste :: [(Tick, [UnknownPlayer])]}
|
||||
| TickLeisteR
|
||||
| ChangeNameR {cnaRplayer :: KnownPlayer}
|
||||
deriving (Show)
|
||||
|
||||
$(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "requestType"}, fieldLabelModifier = drop 4} ''JSONRequest)
|
||||
|
||||
data JSONEvent
|
||||
= SetPlayerTickE {sptEplayer :: KnownPlayer, sptEtick :: Tick}
|
||||
| InitializeTickLeisteE {itlEtickLeiste :: [(Tick, [KnownPlayer])]}
|
||||
| ChangeNameE {cnaEplayer :: KnownPlayer}
|
||||
deriving (Show)
|
||||
|
||||
$(deriveJSON defaultOptions {sumEncoding = defaultTaggedObject {tagFieldName = "eventType"}, fieldLabelModifier = drop 4} ''JSONEvent)
|
Loading…
Add table
Add a link
Reference in a new issue