module Network.Syncthing.Types.DBFile
( DBFile(..)
) where
import Control.Applicative ((<$>), (<*>))
import Control.Monad (MonadPlus (mzero))
import Data.Aeson (FromJSON, Value (..), parseJSON, (.:))
import Network.Syncthing.Types.Common (Device)
import Network.Syncthing.Types.FileInfo (FileInfo)
data DBFile = DBFile {
getAvailability :: [Device]
, getGlobal :: FileInfo
, getLocal :: FileInfo
} deriving (Eq, Show)
instance FromJSON DBFile where
parseJSON (Object v) =
DBFile <$> (v .: "availability")
<*> (v .: "global")
<*> (v .: "local")
parseJSON _ = mzero