module Web.Hyperbole.Types.Client where

import Data.Text (Text)
import Web.Hyperbole.Data.Cookie (Cookies)
import Web.Hyperbole.Data.QueryData as QueryData
import Web.Hyperbole.Types.Request


data Client = Client
  { Client -> RequestId
requestId :: RequestId
  , Client -> Cookies
session :: Cookies
  , Client -> Maybe QueryData
query :: Maybe QueryData
  , Client -> Maybe Text
pageTitle :: Maybe Text
  }


clientSetPageTitle :: Text -> Client -> Client
clientSetPageTitle :: Text -> Client -> Client
clientSetPageTitle Text
t Client{Cookies
$sel:session:Client :: Client -> Cookies
session :: Cookies
session, Maybe QueryData
$sel:query:Client :: Client -> Maybe QueryData
query :: Maybe QueryData
query, RequestId
$sel:requestId:Client :: Client -> RequestId
requestId :: RequestId
requestId} =
  Client{$sel:pageTitle:Client :: Maybe Text
pageTitle = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
t, $sel:session:Client :: Cookies
session = Cookies
session, Maybe QueryData
$sel:query:Client :: Maybe QueryData
query :: Maybe QueryData
query, RequestId
$sel:requestId:Client :: RequestId
requestId :: RequestId
requestId}


clientModCookies :: (Cookies -> Cookies) -> Client -> Client
clientModCookies :: (Cookies -> Cookies) -> Client -> Client
clientModCookies Cookies -> Cookies
f Client{Cookies
$sel:session:Client :: Client -> Cookies
session :: Cookies
session, Maybe QueryData
$sel:query:Client :: Client -> Maybe QueryData
query :: Maybe QueryData
query, RequestId
$sel:requestId:Client :: Client -> RequestId
requestId :: RequestId
requestId, Maybe Text
$sel:pageTitle:Client :: Client -> Maybe Text
pageTitle :: Maybe Text
pageTitle} =
  Client{$sel:session:Client :: Cookies
session = Cookies -> Cookies
f Cookies
session, Maybe QueryData
$sel:query:Client :: Maybe QueryData
query :: Maybe QueryData
query, RequestId
$sel:requestId:Client :: RequestId
requestId :: RequestId
requestId, Maybe Text
$sel:pageTitle:Client :: Maybe Text
pageTitle :: Maybe Text
pageTitle}


clientSetQuery :: QueryData -> Client -> Client
clientSetQuery :: QueryData -> Client -> Client
clientSetQuery QueryData
q Client{Cookies
$sel:session:Client :: Client -> Cookies
session :: Cookies
session, RequestId
$sel:requestId:Client :: Client -> RequestId
requestId :: RequestId
requestId, Maybe Text
$sel:pageTitle:Client :: Client -> Maybe Text
pageTitle :: Maybe Text
pageTitle} =
  Client{$sel:query:Client :: Maybe QueryData
query = QueryData -> Maybe QueryData
forall a. a -> Maybe a
Just QueryData
q, Cookies
$sel:session:Client :: Cookies
session :: Cookies
session, RequestId
$sel:requestId:Client :: RequestId
requestId :: RequestId
requestId, Maybe Text
$sel:pageTitle:Client :: Maybe Text
pageTitle :: Maybe Text
pageTitle}