module CookieTray.Command.Many where import CookieTray (Action (..), Expiring (Expiring), Expiry, Meta (..), Named (..), ToCommandList (..), Tray, Value) import CookieTray qualified import CookieTray.Command (Command (Command)) import CookieTray.Command qualified as Command import Data.Functor ((<&>)) import Prelude (Eq, Ord, Show) data Many = Many { Many -> Tray (Action Value) tray :: Tray (Action Value), Many -> Expiry expiry :: Expiry, Many -> Meta meta :: Meta } deriving (Many -> Many -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Many -> Many -> Bool $c/= :: Many -> Many -> Bool == :: Many -> Many -> Bool $c== :: Many -> Many -> Bool Eq, Eq Many Many -> Many -> Bool Many -> Many -> Ordering Many -> Many -> Many 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 min :: Many -> Many -> Many $cmin :: Many -> Many -> Many max :: Many -> Many -> Many $cmax :: Many -> Many -> Many >= :: Many -> Many -> Bool $c>= :: Many -> Many -> Bool > :: Many -> Many -> Bool $c> :: Many -> Many -> Bool <= :: Many -> Many -> Bool $c<= :: Many -> Many -> Bool < :: Many -> Many -> Bool $c< :: Many -> Many -> Bool compare :: Many -> Many -> Ordering $ccompare :: Many -> Many -> Ordering Ord, Int -> Many -> ShowS [Many] -> ShowS Many -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Many] -> ShowS $cshowList :: [Many] -> ShowS show :: Many -> String $cshow :: Many -> String showsPrec :: Int -> Many -> ShowS $cshowsPrec :: Int -> Many -> ShowS Show) instance ToCommandList Many where toCommandList :: Many -> [Command] toCommandList Many x = forall a. Tray a -> [Named a] CookieTray.toList (Many -> Tray (Action Value) tray Many x) forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \Named (Action Value) y -> Command { name :: Name Command.name = forall a. Named a -> Name CookieTray.name Named (Action Value) y, meta :: Meta Command.meta = Many -> Meta meta Many x, action :: Action (Expiring Value) Command.action = forall a. Named a -> a value Named (Action Value) y forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \Value z -> Expiring { expiring :: Value CookieTray.expiring = Value z, expiry :: Expiry CookieTray.expiry = Many -> Expiry expiry Many x } }