packages feed

hercules-ci-api-0.8.2.0: src/Hercules/API/SimpleAttribute.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE StandaloneDeriving #-}

module Hercules.API.SimpleAttribute
  ( SimpleAttribute (..),
  )
where

import Data.OpenApi qualified as O3
import Hercules.API.Prelude
import Prelude ()

-- | NOTE: Generic types must always be wrapped in a newtype, so as to avoid ambiguities in the generated schema.
data SimpleAttribute a = SimpleAttribute
  { path :: [Text],
    value :: a
  }
  deriving (Generic, Show, Eq)
  deriving anyclass (NFData, FromJSON, ToJSON)

deriving instance (ToSchema a) => ToSchema (SimpleAttribute a)

deriving instance (O3.ToSchema a) => O3.ToSchema (SimpleAttribute a)

deriving instance Functor SimpleAttribute

deriving instance Foldable SimpleAttribute

deriving instance Traversable SimpleAttribute