freckle-app-1.23.0.1: Haskell application toolkit used at Freckle
Safe HaskellNone
LanguageGHC2021

Freckle.App.TextualEnum

Description

Typical instances for enumerated data types with textual representation

Synopsis

Documentation

newtype TextualEnum a Source #

Wrapper around enums

N.B. This should not be used for "enormous" enumerations. It's primary purpose is to provide standard instances for discriminated-union-defined enums.

Constructors

TextualEnum 

Fields

Instances

Instances details
(Bounded a, Enum a) => Arbitrary (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(EnumValue a, Bounded a, Enum a) => FromJSON (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

EnumValue a => ToJSON (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a, Eq a) => HasCodec (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

Generic a => Generic (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

Associated Types

type Rep (TextualEnum a) 
Instance details

Defined in Freckle.App.TextualEnum

type Rep (TextualEnum a) = Rep a

Methods

from :: TextualEnum a -> Rep (TextualEnum a) x #

to :: Rep (TextualEnum a) x -> TextualEnum a #

Show a => Show (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(EnumValue a, Bounded a, Enum a) => FromField (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

EnumValue a => ToField (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

Methods

toField :: TextualEnum a -> Field #

Eq a => Eq (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

Ord a => Ord (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a) => FromHttpApiData (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

EnumValue a => ToHttpApiData (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a) => ToParamSchema (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a, Typeable a, EnumName a) => ToSchema (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(EnumValue a, Bounded a, Enum a) => PathPiece (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a) => PersistField (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

(Bounded a, Enum a, EnumValue a) => PersistFieldSql (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

Methods

sqlType :: Proxy (TextualEnum a) -> SqlType #

type Rep (TextualEnum a) Source # 
Instance details

Defined in Freckle.App.TextualEnum

type Rep (TextualEnum a) = Rep a

class EnumValue a where Source #

Methods

toText :: a -> Text Source #

Convert a TextualEnum to Text

class EnumName (a :: k) where Source #

Methods

enumName :: Proxy a -> Text Source #

Name of a TextualEnum, used for naming schemas

enums :: (Bounded a, Enum a) => NonEmpty (TextualEnum a) Source #

All values of a TextualEnum

prop_roundTripEnumText :: (Bounded a, Enum a, EnumValue a, Eq a) => TextualEnum a -> Bool Source #

Test that enum instances are coherent