{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module Autodocodec.Swagger.DerivingVia where

import Autodocodec
import Autodocodec.Swagger.Schema
import Data.Proxy
import Data.Swagger as Swagger

-- | An instance for 'Autodocodec' that lets you use 'DerivingVia' to derive 'Swagger.ToSchema' if your type has a 'HasCodec' instance.
--
-- > deriving (Swagger.ToSchema) via (Autodocodec FooBar)
instance (HasCodec a) => Swagger.ToSchema (Autodocodec a) where
  declareNamedSchema :: Proxy (Autodocodec a) -> Declare (Definitions Schema) NamedSchema
declareNamedSchema (Proxy (Autodocodec a)
Proxy :: Proxy (Autodocodec a)) = Proxy a -> Declare (Definitions Schema) NamedSchema
forall value.
HasCodec value =>
Proxy value -> Declare (Definitions Schema) NamedSchema
declareNamedSchemaViaCodec (Proxy a
forall k (t :: k). Proxy t
Proxy :: Proxy a)