module Cachix.Types.NarInfoCreate ( NarInfoCreate (..), NarInfoInvalid, isNarInfoCreateValid ) where import Control.Exception (Exception) import Data.Aeson ( FromJSON, ToJSON ) import Data.Swagger import Data.Text (Text) import GHC.Generics (Generic) -- TODO: get rid of c prefix -- | Client create type data NarInfoCreate = NarInfoCreate { cStoreHash :: Text, -- ^ $storePrefix / $storeHash - $storeSuffix cStoreSuffix :: Text, -- ^ $storePrefix / $storeHash - $storeSuffix cNarHash :: Text, cNarSize :: Integer, cFileHash :: Text, cFileSize :: Integer, cReferences :: [Text], cDeriver :: Text, cSig :: Text } deriving (Generic, Show, FromJSON, ToJSON, ToSchema) data NarInfoInvalid = NarSizeIsZero deriving (Show, Exception) isNarInfoCreateValid :: NarInfoCreate -> Either NarInfoInvalid () isNarInfoCreateValid nic | cNarSize nic == 0 = Left NarSizeIsZero | otherwise = Right ()