rfc 0.0.0.13 → 0.0.0.14
raw patch · 4 files changed
+43/−7 lines, 4 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ RFC.Data.IdAnd: instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (RFC.Data.IdAnd.IdAnd a)
+ RFC.Data.UUID: instance Servant.Docs.Internal.ToCapture (Servant.API.Capture.Capture "id" Data.UUID.Types.Internal.UUID)
+ RFC.JSON: instance Data.Swagger.Internal.Schema.ToSchema Data.Aeson.Types.Internal.Value
Files
- rfc.cabal +1/−1
- src/RFC/Data/IdAnd.hs +24/−5
- src/RFC/Data/UUID.hs +8/−1
- src/RFC/JSON.hs +10/−0
rfc.cabal view
@@ -1,5 +1,5 @@ name: rfc-version: 0.0.0.13+version: 0.0.0.14 synopsis: Robert Fischer's Common library description: An enhanced Prelude and various utilities for Aeson, Servant, PSQL, and Redis that Robert Fischer uses. homepage: https://github.com/RobertFischer/rfc#README.md
src/RFC/Data/IdAnd.hs view
@@ -1,9 +1,14 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-} + module RFC.Data.IdAnd ( idAndsToMap , IdAnd(..)@@ -19,8 +24,10 @@ import qualified Data.Map as Map #ifndef GHCJS_BROWSER+import Control.Lens hiding ((.=)) import Data.Aeson as JSON import Data.Proxy (Proxy (..))+import Data.Swagger import Data.UUID.Types as UUID import Database.PostgreSQL.Simple.FromField () import Database.PostgreSQL.Simple.FromRow@@ -63,6 +70,18 @@ instance (ToRow a) => ToRow (IdAnd a) where toRow (IdAnd (id,a)) = toField id : toRow a++instance (ToSchema a) => ToSchema (IdAnd a) where+ declareNamedSchema _ = do+ NamedSchema{..} <- declareNamedSchema (Proxy :: Proxy a)+ let aMaybeName = _namedSchemaName+ aSchema <- declareSchemaRef (Proxy :: Proxy a)+ idSchema <- declareSchemaRef (Proxy :: Proxy UUID)+ return $ NamedSchema (map (\name -> "IdAnd " ++ name) aMaybeName) $+ mempty+ & type_ .~ SwaggerObject+ & properties .~ [("id", idSchema), ("value", aSchema)]+ & required .~ ["id", "value"] uuidList :: [UUID] uuidList = List.cycle $ map (fromMaybe UUID.nil) $ map UUID.fromString
src/RFC/Data/UUID.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}@@ -21,12 +22,18 @@ #endif #ifndef GHCJS_BROWSER- import Database.PostgreSQL.Simple.FromRow import Database.PostgreSQL.Simple.ToRow import Database.PostgreSQL.Simple.Types (Only (..))+import Servant.API.Capture+import Servant.Docs #endif +#ifndef GHCJS_BROWSER+instance ToCapture (Capture "id" UUID) where+ toCapture _ = DocCapture "id" "UUID identifier"++#endif #ifndef GHCJS_BROWSER instance FromRow UUID where
src/RFC/JSON.hs view
@@ -39,6 +39,10 @@ import Data.Either (either) #endif +#ifndef GHCJS_BROWSER+import qualified Data.Swagger as Swag+#endif+ jsonOptions :: Options jsonOptions = defaultOptions { sumEncoding = ObjectWithSingleField@@ -90,4 +94,10 @@ cs . JSON.encodeToLazyText #else cs . JSON.encode+#endif++#ifndef GHCJS_BROWSER+instance Swag.ToSchema Value where+ declareNamedSchema _ = do+ return $ Swag.NamedSchema (Just $ cs "Value") $ mempty #endif