server/src/Session.hs

37 lines
797 B
Haskell

{-# LANGUAGE NamedFieldPuns #-}
module Session (
ID
, Status
, T(..)
, Update
, open
, setPlayer
) where
import Data.Text (Text)
import qualified Hanafuda.ID as Hanafuda (ID, IDType(..), Prefix(..))
import Hanafuda.KoiKoi (PlayerID)
import Network.WebSockets (Connection)
import qualified Player (T(..))
type ID = Hanafuda.ID T
instance Hanafuda.IDType T where
prefix = Hanafuda.Prefix "Session"
type Status = Maybe Player.T
data T = T {
connection :: Connection
, player :: Status
}
type Update = T -> T
setPlayer :: PlayerID -> Text -> Session.Update
setPlayer playerID name session = session {
player = Just $ Player.T {Player.playerID, Player.name}
}
open :: Connection -> T
open connection = T {
connection
, player = Nothing
}