added Aeson instances and JSON datatypes
This commit is contained in:
parent
f41f84736a
commit
dd2d653459
3 changed files with 62 additions and 3 deletions
|
@ -22,6 +22,9 @@ description: Please see the README on GitHub at <https://github.com/gith
|
||||||
dependencies:
|
dependencies:
|
||||||
- base >= 4.7 && < 5
|
- base >= 4.7 && < 5
|
||||||
- tickLeiste
|
- tickLeiste
|
||||||
|
- aeson
|
||||||
|
- uuid
|
||||||
|
- text
|
||||||
|
|
||||||
library:
|
library:
|
||||||
source-dirs: src
|
source-dirs: src
|
||||||
|
|
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)
|
|
@ -25,14 +25,18 @@ source-repository head
|
||||||
|
|
||||||
library
|
library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
|
Data.Aeson.TickLeiste
|
||||||
Lib
|
Lib
|
||||||
other-modules:
|
other-modules:
|
||||||
Paths_tickLeisteServer
|
Paths_tickLeisteServer
|
||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
src
|
src
|
||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
aeson
|
||||||
|
, base >=4.7 && <5
|
||||||
|
, text
|
||||||
, tickLeiste
|
, tickLeiste
|
||||||
|
, uuid
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
executable tickLeisteServer
|
executable tickLeisteServer
|
||||||
|
@ -43,9 +47,12 @@ executable tickLeisteServer
|
||||||
app
|
app
|
||||||
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
aeson
|
||||||
|
, base >=4.7 && <5
|
||||||
|
, text
|
||||||
, tickLeiste
|
, tickLeiste
|
||||||
, tickLeisteServer
|
, tickLeisteServer
|
||||||
|
, uuid
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
test-suite tickLeisteServer-test
|
test-suite tickLeisteServer-test
|
||||||
|
@ -57,7 +64,10 @@ test-suite tickLeisteServer-test
|
||||||
test
|
test
|
||||||
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
aeson
|
||||||
|
, base >=4.7 && <5
|
||||||
|
, text
|
||||||
, tickLeiste
|
, tickLeiste
|
||||||
, tickLeisteServer
|
, tickLeisteServer
|
||||||
|
, uuid
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue