mateamt/src/Types/Avatar.hs

54 lines
1.1 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
module Types.Avatar where
import Data.ByteString
import qualified Data.Text as T
import Data.Word (Word8)
import Data.Aeson
import GHC.Generics
-- internal imports
import Classes
data Avatar = Avatar
{ avatarId :: Int
, avatarName :: T.Text
, avatarHash :: [Word8]
, avatarData :: [Word8]
}
deriving (Show, Generic)
instance ToJSON Avatar where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Avatar
instance FromDatabase Avatar where
type OutTuple Avatar = (Int, T.Text, ByteString, ByteString)
fromDatabase (id_, name, hash, data_) =
Avatar id_ name (unpack hash) (unpack data_)
data AvatarData = AvatarData
{ avatarDataName :: T.Text
, avatarDataData :: [Word8]
}
deriving (Show, Generic)
instance ToJSON AvatarData where
toEncoding = genericToEncoding defaultOptions
instance FromJSON AvatarData
instance FromDatabase AvatarData where
type OutTuple AvatarData = (T.Text, ByteString)
fromDatabase (name, data_) =
AvatarData name (unpack data_)