hyperbole-0.5.0: Interactive HTML apps using type-safe serverside Haskell
Safe HaskellSafe-Inferred
LanguageGHC2021

Web.Hyperbole.Data.QueryData

Synopsis

Documentation

newtype QueryData Source #

Key-value store for query params and sessions

Constructors

QueryData (Map Param ParamValue) 

class FromQuery a where Source #

Decode a type from a QueryData. Missing fields are set to def

data Filters = Filters
  { active :: Bool
  , term :: Text
  }
  deriving (Generic, Eq, FromQuery, ToQuery)
>>> parseQuery $ QueryData.parse "active=true&search=asdf"
Right (Filters True "asdf")
>>> parseQuery $ QueryData.parse "search=asdf"
Right (Filters False "asdf")

Minimal complete definition

Nothing

Instances

Instances details
FromQuery QueryData Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

class ToQuery a where Source #

A page can store state in the browser query string. ToQuery and FromQuery control how a datatype is encoded to a full query string

data Filters = Filters
  { active :: Bool
  , term :: Text
  }
  deriving (Generic, Eq, FromQuery, ToQuery)
>>> QueryData.render $ toQuery $ Filter True "asdf"
"active=true&search=asdf"

If the value of a field is the same as Default, it will be omitted from the query string

>>> QueryData.render $ toQuery $ Filter True ""
"active=true"
>>> QueryData.render $ toQuery $ Filter False ""
""

Minimal complete definition

Nothing

Methods

toQuery :: a -> QueryData Source #

default toQuery :: (Generic a, GToQuery (Rep a)) => a -> QueryData Source #

Instances

Instances details
ToQuery Query Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

ToQuery QueryData Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

class GFromQuery f where Source #

Generic decoding of records from a Query

Instances

Instances details
(GFromQuery f, GFromQuery g) => GFromQuery (f :*: g :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gParseQuery :: forall (p :: k0). QueryData -> Either String ((f :*: g) p) Source #

GFromQuery f => GFromQuery (M1 C c f :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gParseQuery :: forall (p :: k0). QueryData -> Either String (M1 C c f p) Source #

GFromQuery f => GFromQuery (M1 D d f :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gParseQuery :: forall (p :: k0). QueryData -> Either String (M1 D d f p) Source #

Selector s => GFromQuery (M1 S s (K1 R Text :: k -> Type) :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gParseQuery :: forall (p :: k0). QueryData -> Either String (M1 S s (K1 R Text) p) Source #

(Selector s, FromParam a, Default a) => GFromQuery (M1 S s (K1 R a :: k -> Type) :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gParseQuery :: forall (p :: k0). QueryData -> Either String (M1 S s (K1 R a) p) Source #

class GToQuery f where Source #

Generic encoding of records to a Query

Methods

gToQuery :: f p -> QueryData Source #

Instances

Instances details
(GToQuery f, GToQuery g) => GToQuery (f :*: g :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gToQuery :: forall (p :: k0). (f :*: g) p -> QueryData Source #

GToQuery f => GToQuery (M1 C d f :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gToQuery :: forall (p :: k0). M1 C d f p -> QueryData Source #

GToQuery f => GToQuery (M1 D d f :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gToQuery :: forall (p :: k0). M1 D d f p -> QueryData Source #

Selector s => GToQuery (M1 S s (K1 R Text :: k -> Type) :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gToQuery :: forall (p :: k0). M1 S s (K1 R Text) p -> QueryData Source #

(Selector s, ToParam a, Eq a, Default a) => GToQuery (M1 S s (K1 R a :: k -> Type) :: k -> Type) Source # 
Instance details

Defined in Web.Hyperbole.Data.QueryData

Methods

gToQuery :: forall (p :: k0). M1 S s (K1 R a) p -> QueryData Source #