module Pinecone.Prelude
(
aesonOptions
, labelModifier
, stripPrefix
, module Control.Applicative
, module Data.Aeson
, module Data.Aeson.Types
, module Data.Map
, module Data.Scientific
, module Data.String
, module Data.Text
, module Data.Time.Clock.POSIX
, module Data.Vector
, module GHC.Generics
, module Numeric.Natural
, module Servant.API
, module Web.HttpApiData
) where
import Control.Applicative (Alternative(..))
import Data.Aeson.Types (typeMismatch)
import Data.Map (Map)
import Data.Scientific (Scientific)
import Data.String (IsString(..))
import Data.Text (Text)
import Data.Time.Clock.POSIX (POSIXTime)
import Data.Vector (Vector)
import GHC.Generics (Generic)
import Numeric.Natural (Natural)
import Web.HttpApiData (ToHttpApiData(..))
import Data.Aeson
( genericToJSON
, genericParseJSON
, FromJSON(..)
, Object
, Options(..)
, SumEncoding(..)
, ToJSON(..)
, Value(..)
)
import Servant.API
( Capture
, Delete
, DeleteAccepted
, Get
, Header'
, JSON
, NoContent
, Patch
, Post
, PostCreated
, QueryParam
, QueryParam'
, QueryParams
, ReqBody
, Required
, Strict
, (:<|>)(..)
, (:>)
)
import qualified Data.Aeson as Aeson
import qualified Data.List as List
import qualified Data.Char as Char
dropTrailingUnderscore :: String -> String
dropTrailingUnderscore :: String -> String
dropTrailingUnderscore String
"_" = String
""
dropTrailingUnderscore String
"" = String
""
dropTrailingUnderscore (Char
c : String
cs) = Char
c Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
dropTrailingUnderscore String
cs
labelModifier :: String -> String
labelModifier :: String -> String
labelModifier = (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
Char.toLower (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
dropTrailingUnderscore
stripPrefix :: String -> String -> String
stripPrefix :: String -> String -> String
stripPrefix String
prefix String
string = String -> String
labelModifier String
suffix
where
suffix :: String
suffix = case String -> String -> Maybe String
forall a. Eq a => [a] -> [a] -> Maybe [a]
List.stripPrefix String
prefix String
string of
Maybe String
Nothing -> String
string
Just String
x -> String
x
aesonOptions :: Options
aesonOptions :: Options
aesonOptions = Options
Aeson.defaultOptions
{ fieldLabelModifier = labelModifier
, constructorTagModifier = labelModifier
, omitNothingFields = True
}