packages feed

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

module CookieTray.Command.PutMany where

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

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