{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}
{-# LANGUAGE OverloadedStrings  #-}


module HNormalise.Lmod.Json where

--------------------------------------------------------------------------------
import           Data.Aeson
import           Data.Monoid
--------------------------------------------------------------------------------

import           HNormalise.Lmod.Internal
--------------------------------------------------------------------------------


instance ToJSON LmodInfo where
    --toEncoding = genericToEncoding defaultOptions
    toEncoding (LmodInfo username cluster jobid) =
        pairs
            (  "username" .= username
            <> "cluster" .= cluster
            <> "jobid" .= jobid
            )

instance ToJSON LmodLoad where
    --toEncoding = genericToEncoding defaultOptions
    toEncoding (LmodLoad info userload modul filename) =
        pairs
            (  "info" .= info
            <> "userload" .= userload
            <> "module" .= modul
            <> "filename" .= filename
            )

instance ToJSON LmodModule where
    --toEncoding = genericToEncoding defaultOptions
    toEncoding (LmodModule name version) =
        pairs
            (  "name" .= name
            <> "version" .= version
            )