module CookieTray.Command.PutOne where

import CookieTray (Action (..), Expiring (Expiring), Expiry, Meta (..), Name, ToCommandList (..), Value)
import CookieTray qualified
import CookieTray.Command (Command (Command))
import CookieTray.Command qualified as Command
import Prelude (Eq, Ord, Show)

data PutOne = PutOne
  { PutOne -> Name
name :: Name,
    PutOne -> Value
value :: Value,
    PutOne -> Expiry
expiry :: Expiry,
    PutOne -> Meta
meta :: Meta
  }
  deriving (PutOne -> PutOne -> Bool
(PutOne -> PutOne -> Bool)
-> (PutOne -> PutOne -> Bool) -> Eq PutOne
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PutOne -> PutOne -> Bool
== :: PutOne -> PutOne -> Bool
$c/= :: PutOne -> PutOne -> Bool
/= :: PutOne -> PutOne -> Bool
Eq, Eq PutOne
Eq PutOne =>
(PutOne -> PutOne -> Ordering)
-> (PutOne -> PutOne -> Bool)
-> (PutOne -> PutOne -> Bool)
-> (PutOne -> PutOne -> Bool)
-> (PutOne -> PutOne -> Bool)
-> (PutOne -> PutOne -> PutOne)
-> (PutOne -> PutOne -> PutOne)
-> Ord PutOne
PutOne -> PutOne -> Bool
PutOne -> PutOne -> Ordering
PutOne -> PutOne -> PutOne
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: PutOne -> PutOne -> Ordering
compare :: PutOne -> PutOne -> Ordering
$c< :: PutOne -> PutOne -> Bool
< :: PutOne -> PutOne -> Bool
$c<= :: PutOne -> PutOne -> Bool
<= :: PutOne -> PutOne -> Bool
$c> :: PutOne -> PutOne -> Bool
> :: PutOne -> PutOne -> Bool
$c>= :: PutOne -> PutOne -> Bool
>= :: PutOne -> PutOne -> Bool
$cmax :: PutOne -> PutOne -> PutOne
max :: PutOne -> PutOne -> PutOne
$cmin :: PutOne -> PutOne -> PutOne
min :: PutOne -> PutOne -> PutOne
Ord, Int -> PutOne -> ShowS
[PutOne] -> ShowS
PutOne -> String
(Int -> PutOne -> ShowS)
-> (PutOne -> String) -> ([PutOne] -> ShowS) -> Show PutOne
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PutOne -> ShowS
showsPrec :: Int -> PutOne -> ShowS
$cshow :: PutOne -> String
show :: PutOne -> String
$cshowList :: [PutOne] -> ShowS
showList :: [PutOne] -> ShowS
Show)

instance ToCommandList PutOne where
  toCommandList :: PutOne -> [Command]
toCommandList PutOne
x =
    (Command -> [Command] -> [Command]
forall a. a -> [a] -> [a]
: [])
      Command
        { name :: Name
Command.name = PutOne -> Name
name PutOne
x,
          meta :: Meta
Command.meta = PutOne -> Meta
meta PutOne
x,
          action :: Action (Expiring Value)
Command.action =
            Expiring Value -> Action (Expiring Value)
forall a. a -> Action a
Put
              Expiring
                { expiring :: Value
CookieTray.expiring = PutOne -> Value
value PutOne
x,
                  expiry :: Expiry
CookieTray.expiry = PutOne -> Expiry
expiry PutOne
x
                }
        }