Bläddra i källkod

update aeson + using toEncoding instead of toJSON

Jérôme Mahuet 9 år sedan
förälder
incheckning
82be916817

+ 1 - 1
frameworks/Haskell/spock/spock.cabal

@@ -20,7 +20,7 @@ executable spock-exe
   build-depends:       base
                      , Spock
                      , text
-                     , aeson
+                     , aeson >= 0.11
                      , postgresql-simple
                      , random
                      , transformers

+ 9 - 6
frameworks/Haskell/spock/src/Models/Fortune.hs

@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Models.Fortune
@@ -6,24 +7,26 @@ module Models.Fortune
     ) where
 
 import           Data.Aeson
+import           Data.Monoid                        ((<>))
 import           Data.Ord
 import qualified Data.Text                          as T
 import qualified Database.PostgreSQL.Simple         as PG
 import           Database.PostgreSQL.Simple.FromRow
+import           GHC.Generics
 
 
 data Fortune = Fortune
     { _idF      :: !Integer
     , _messageF :: !T.Text
-    } deriving (Show)
+    } deriving (Show, Generic)
 
 -- | JSON serialization
 instance ToJSON Fortune where
-    toJSON f = object
-        [ "id"       .= _idF f
-        , "message"  .= _messageF f
-        ]
-    {-# INLINE toJSON #-}
+    toEncoding f =
+        pairs (  "id"      .= _idF f
+              <> "message" .= _messageF f
+              )
+    {-# INLINE toEncoding #-}
 
 -- | Transforming a database row into a World datatype.
 instance FromRow Fortune where

+ 9 - 6
frameworks/Haskell/spock/src/Models/World.hs

@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Models.World
@@ -11,23 +12,25 @@ module Models.World
 import           Control.Concurrent.Async
 import           Data.Aeson
 import           Data.Maybe
+import           Data.Monoid                        ((<>))
 import qualified Database.PostgreSQL.Simple         as PG
 import           Database.PostgreSQL.Simple.FromRow
+import           GHC.Generics
 import           System.Random
 
 
 data World = World
     { _idW           :: !Integer
     , _randomNumberW :: !Integer
-    } deriving (Show)
+    } deriving (Show, Generic)
 
 -- | JSON serialization
 instance ToJSON World where
-    toJSON w = object
-        [ "id"            .= _idW w
-        , "randomNumber"  .= _randomNumberW w
-        ]
-    {-# INLINE toJSON #-}
+    toEncoding w =
+        pairs (  "id"    .= _idW w
+              <> "type"  .= _randomNumberW w
+              )
+    {-# INLINE toEncoding #-}
 
 -- | Transforming a database row into a World datatype.
 instance FromRow World where

+ 2 - 1
frameworks/Haskell/spock/stack.yaml

@@ -8,7 +8,8 @@ resolver: lts-5.4
 packages:
 - '.'
 # Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
-extra-deps: []
+extra-deps:
+- aeson-0.11.0.0
 
 # Override default flag values for local packages and extra-deps
 flags: {}