hasbolt-extras-0.0.1.9: Extras for hasbolt library
Safe HaskellNone
LanguageHaskell2010

Database.Bolt.Extras.Generic

Synopsis

Documentation

newtype BoltEnum a Source #

Wrapper to encode enum-like types as strings in the DB.

Intended usage is with DerivingVia:

>>> :{
data Color = Red | Green | Blue
  deriving (Show, Generic)
  deriving (ToValue, FromValue) via BoltEnum Color
:}
>>> toValue Red
T "Red"
>>> fromValue (T "Blue") :: Color
Blue
>>> fromValue (T "Brown") :: Color
*** Exception: Could not unpack unknown value Brown of Color
...
...

Constructors

BoltEnum a 

Instances

Instances details
Eq a => Eq (BoltEnum a) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

(==) :: BoltEnum a -> BoltEnum a -> Bool #

(/=) :: BoltEnum a -> BoltEnum a -> Bool #

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

Defined in Database.Bolt.Extras.Generic

Methods

showsPrec :: Int -> BoltEnum a -> ShowS #

show :: BoltEnum a -> String #

showList :: [BoltEnum a] -> ShowS #

Generic (BoltEnum a) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Associated Types

type Rep (BoltEnum a) :: Type -> Type #

Methods

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

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

(Typeable a, Generic a, GFromValue (Rep a)) => FromValue (BoltEnum a) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

(Generic a, GToValue (Rep a)) => ToValue (BoltEnum a) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

toValue :: BoltEnum a -> Value Source #

type Rep (BoltEnum a) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

type Rep (BoltEnum a) = D1 ('MetaData "BoltEnum" "Database.Bolt.Extras.Generic" "hasbolt-extras-0.0.1.9-7aVtZdzPEGzAbpuvXSMKoc" 'True) (C1 ('MetaCons "BoltEnum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

class GToValue rep where Source #

Methods

gToValue :: rep a -> String Source #

Instances

Instances details
(GToValue l, GToValue r) => GToValue (l :+: r) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gToValue :: (l :+: r) a -> String Source #

GToValue cs => GToValue (D1 meta cs) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gToValue :: D1 meta cs a -> String Source #

KnownSymbol name => GToValue (C1 ('MetaCons name fixity rec) (U1 :: Type -> Type)) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gToValue :: C1 ('MetaCons name fixity rec) U1 a -> String Source #

class GFromValue rep where Source #

Methods

gFromValue :: String -> Maybe (rep a) Source #

Instances

Instances details
(GFromValue l, GFromValue r) => GFromValue (l :+: r) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gFromValue :: String -> Maybe ((l :+: r) a) Source #

GFromValue cs => GFromValue (D1 meta cs) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gFromValue :: String -> Maybe (D1 meta cs a) Source #

KnownSymbol name => GFromValue (C1 ('MetaCons name fixity rec) (U1 :: Type -> Type)) Source # 
Instance details

Defined in Database.Bolt.Extras.Generic

Methods

gFromValue :: String -> Maybe (C1 ('MetaCons name fixity rec) U1 a) Source #

>>> :set -XDerivingStrategies -XDerivingVia
>>> :load Database.Bolt.Extras Database.Bolt.Extras.Generic
>>> import GHC.Generics
>>> import Database.Bolt.Extras.Generic
>>> import Database.Bolt (Value (..))