{- |
   Module     : Composite.Aeson.WriteOnly
   License    : MIT
   Stability  : experimental

Exports WriteOnly indicators for JsonProfunctor.
-}
module Composite.Aeson.WriteOnly (
  WriteOnlyJsonField
, noRead
, writeOnlyJsonFormat
) where

import Composite.Aeson
import Data.Aeson
import Data.Aeson.BetterErrors
import Data.Functor.Identity

data WriteOnlyJsonField = WriteOnlyJsonField
  deriving Show

noRead :: ParseT WriteOnlyJsonField Identity a
noRead = throwCustomError WriteOnlyJsonField

writeOnlyJsonFormat :: (a -> Value) -> JsonFormat e a
writeOnlyJsonFormat f = jsonFormatWithoutCustomError $ JsonFormat $ JsonProfunctor f noRead