[FIX] bug invitation
[gargantext.git] / src / Gargantext / Core / Utils / Prefix.hs
index 59fdfd9777ee0a50022780adba9bc9ae5a62d007..2662b7694466507c0809ba7a3ff0e8f5dcc28d60 100644 (file)
@@ -11,18 +11,21 @@ Here is a longer description of this module, containing some
 commentary with @some markup@.
 -}
 
-{-# LANGUAGE NoImplicitPrelude #-}
 
-module Gargantext.Core.Utils.Prefix where
+module Gargantext.Core.Utils.Prefix
+  ( module Gargantext.Core.Utils.Prefix
+  , wellNamedSchema
+  ) where
 
 import Prelude
 
 import Data.Aeson (Value, defaultOptions, parseJSON)
-import Data.Aeson.TH (Options, fieldLabelModifier, omitNothingFields)
+import Data.Aeson.TH (Options, fieldLabelModifier, omitNothingFields, sumEncoding, SumEncoding(UntaggedValue))
 import Data.Aeson.Types (Parser)
 import Data.Char (toLower)
-import Data.Monoid ((<>))
-import Text.Read (Read(..),readMaybe)
+import Data.Swagger.SchemaOptions (SchemaOptions, fromAesonOptions)
+import Servant.Job.Utils (wellNamedSchema)
+import Text.Read (readMaybe)
 
 
 -- | Aeson Options that remove the prefix from fields
@@ -32,6 +35,13 @@ unPrefix prefix = defaultOptions
   , omitNothingFields = True
   }
 
+unPrefixUntagged :: String -> Options
+unPrefixUntagged prefix = (unPrefix prefix)
+  { sumEncoding = UntaggedValue }
+
+unPrefixSwagger :: String -> SchemaOptions
+unPrefixSwagger = fromAesonOptions . unPrefix
+
 -- | Lower case leading character
 unCapitalize :: String -> String
 unCapitalize [] = []
@@ -54,5 +64,5 @@ parseJSONFromString :: (Read a) => Value -> Parser a
 parseJSONFromString v = do
   numString <- parseJSON v
   case readMaybe (numString :: String) of
-    Nothing -> fail $ "Invalid number for TransactionID: " ++ show v
+    Nothing -> fail $ "Invalid number for TransactionID: " ++ show v -- TODO error message too specific
     Just n -> return n