|
|
@@ -4,11 +4,13 @@ import Prelude
|
|
|
|
|
|
import Data.Argonaut.Decode (class DecodeJson, JsonDecodeError(..))
|
|
|
import Data.Argonaut.Decode.Decoders (decodeNumber)
|
|
|
+import Data.Argonaut.Decode.Generic (genericDecodeJson)
|
|
|
import Data.Argonaut.Encode (class EncodeJson)
|
|
|
import Data.Argonaut.Encode.Encoders (encodeNumber, encodeString)
|
|
|
import Data.Argonaut.Encode.Generic (genericEncodeJson)
|
|
|
-import Data.Date (Month, Year)
|
|
|
+import Data.Date (Month(..), Year)
|
|
|
import Data.Either (note)
|
|
|
+import Data.Enum (toEnum)
|
|
|
import Data.Generic.Rep (class Generic)
|
|
|
import Data.Int64 (Int64)
|
|
|
import Data.Int64 as I64
|
|
|
@@ -34,6 +36,10 @@ derive instance Generic MonthYear _
|
|
|
instance Show MonthYear where show = genericShow
|
|
|
instance EncodeJson MonthYear where
|
|
|
encodeJson _ = encodeString "monthyear" -- TODO
|
|
|
+instance DecodeJson MonthYear where
|
|
|
+ decodeJson _json = note MissingValue $ do
|
|
|
+ year <- toEnum 2000
|
|
|
+ pure $ MonthYear January year
|
|
|
|
|
|
data TimeSpan =
|
|
|
TimeSpanBounded MonthYear MonthYear
|
|
|
@@ -43,6 +49,7 @@ derive instance Eq TimeSpan
|
|
|
derive instance Generic TimeSpan _
|
|
|
instance Show TimeSpan where show = genericShow
|
|
|
instance EncodeJson TimeSpan where encodeJson a = genericEncodeJson a
|
|
|
+instance DecodeJson TimeSpan where decodeJson a = genericDecodeJson a
|
|
|
|
|
|
data MonthYearOrToday = MY MonthYear | Today
|
|
|
|
|
|
@@ -55,6 +62,7 @@ derive instance Eq Duration
|
|
|
derive instance Generic Duration _
|
|
|
instance Show Duration where show = genericShow
|
|
|
instance EncodeJson Duration where encodeJson _ = encodeString "duration" -- TODO
|
|
|
+instance DecodeJson Duration where decodeJson a = genericDecodeJson a
|
|
|
|
|
|
data JobFlexibility = JobFlexHybrid | JobFlexOnSite | JobFlexFullRemote
|
|
|
|
|
|
@@ -62,3 +70,4 @@ derive instance Eq JobFlexibility
|
|
|
derive instance Generic JobFlexibility _
|
|
|
instance Show JobFlexibility where show = genericShow
|
|
|
instance EncodeJson JobFlexibility where encodeJson a = genericEncodeJson a
|
|
|
+instance DecodeJson JobFlexibility where decodeJson a = genericDecodeJson a
|