module Basic where
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.:?), (.=))
import qualified Data.Aeson as JSON
import GHC.Generics (Generic)
import qualified Gotyno.Helpers as Helpers
import Prelude
data Recruiter = Recruiter
{ Recruiter -> String
recruiterType :: !String,
Recruiter -> String
recruiterName :: !String,
Recruiter -> [Maybe String]
recruiterEmails :: ![Maybe String],
Recruiter -> Maybe Recruiter
recruiterRecruiter :: !(Maybe Recruiter),
Recruiter -> Integer
recruiterCreated :: !Integer
}
deriving (Recruiter -> Recruiter -> Bool
(Recruiter -> Recruiter -> Bool)
-> (Recruiter -> Recruiter -> Bool) -> Eq Recruiter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Recruiter -> Recruiter -> Bool
$c/= :: Recruiter -> Recruiter -> Bool
== :: Recruiter -> Recruiter -> Bool
$c== :: Recruiter -> Recruiter -> Bool
Eq, Int -> Recruiter -> ShowS
[Recruiter] -> ShowS
Recruiter -> String
(Int -> Recruiter -> ShowS)
-> (Recruiter -> String)
-> ([Recruiter] -> ShowS)
-> Show Recruiter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Recruiter] -> ShowS
$cshowList :: [Recruiter] -> ShowS
show :: Recruiter -> String
$cshow :: Recruiter -> String
showsPrec :: Int -> Recruiter -> ShowS
$cshowsPrec :: Int -> Recruiter -> ShowS
Show, (forall x. Recruiter -> Rep Recruiter x)
-> (forall x. Rep Recruiter x -> Recruiter) -> Generic Recruiter
forall x. Rep Recruiter x -> Recruiter
forall x. Recruiter -> Rep Recruiter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Recruiter x -> Recruiter
$cfrom :: forall x. Recruiter -> Rep Recruiter x
Generic)
instance FromJSON Recruiter where
parseJSON :: Value -> Parser Recruiter
parseJSON = String -> (Object -> Parser Recruiter) -> Value -> Parser Recruiter
forall a. String -> (Object -> Parser a) -> Value -> Parser a
JSON.withObject String
"Recruiter" ((Object -> Parser Recruiter) -> Value -> Parser Recruiter)
-> (Object -> Parser Recruiter) -> Value -> Parser Recruiter
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
String
recruiterType <- Object
o Object -> Text -> Parser String
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"type" Parser String -> (String -> Parser String) -> Parser String
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> String -> Parser String
forall a. (Eq a, Show a) => a -> a -> Parser a
Helpers.checkEqualTo String
"Recruiter"
String
recruiterName <- Object
o Object -> Text -> Parser String
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"Name"
[Maybe String]
recruiterEmails <- Object
o Object -> Text -> Parser [Maybe String]
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"emails"
Maybe Recruiter
recruiterRecruiter <- Object
o Object -> Text -> Parser (Maybe Recruiter)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"recruiter"
Helpers.StringEncodedInteger Integer
recruiterCreated <- Object
o Object -> Text -> Parser StringEncodedInteger
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"created"
Recruiter -> Parser Recruiter
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Recruiter -> Parser Recruiter) -> Recruiter -> Parser Recruiter
forall a b. (a -> b) -> a -> b
$
Recruiter :: String
-> String
-> [Maybe String]
-> Maybe Recruiter
-> Integer
-> Recruiter
Recruiter
{ String
recruiterType :: String
$sel:recruiterType:Recruiter :: String
recruiterType,
String
recruiterName :: String
$sel:recruiterName:Recruiter :: String
recruiterName,
[Maybe String]
recruiterEmails :: [Maybe String]
$sel:recruiterEmails:Recruiter :: [Maybe String]
recruiterEmails,
Maybe Recruiter
recruiterRecruiter :: Maybe Recruiter
$sel:recruiterRecruiter:Recruiter :: Maybe Recruiter
recruiterRecruiter,
Integer
recruiterCreated :: Integer
$sel:recruiterCreated:Recruiter :: Integer
recruiterCreated
}
instance ToJSON Recruiter where
toJSON :: Recruiter -> Value
toJSON Recruiter
value =
[Pair] -> Value
JSON.object
[ Text
"type" Text -> LiteralString -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Text -> LiteralString
Helpers.LiteralString Text
"Recruiter",
Text
"name" Text -> String -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Recruiter -> String
recruiterName Recruiter
value,
Text
"emails" Text -> [Maybe String] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Recruiter -> [Maybe String]
recruiterEmails Recruiter
value,
Text
"recruiter" Text -> Maybe Recruiter -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Recruiter -> Maybe Recruiter
recruiterRecruiter Recruiter
value,
Text
"created" Text -> StringEncodedInteger -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Integer -> StringEncodedInteger
Helpers.StringEncodedInteger (Recruiter -> Integer
recruiterCreated Recruiter
value)
]