packages feed

cookie-tray-0.0.0.0: library/CookieTray/Command/Many.hs

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
  { tray :: Tray (Action Value),
    expiry :: Expiry,
    meta :: Meta
  }
  deriving (Eq, Ord, Show)

instance ToCommandList Many where
  toCommandList x =
    CookieTray.toList (tray x) <&> \y ->
      Command
        { Command.name = CookieTray.name y,
          Command.meta = meta x,
          Command.action =
            value y <&> \z ->
              Expiring
                { CookieTray.expiring = z,
                  CookieTray.expiry = expiry x
                }
        }