mateamt/src/Types/Avatar.hs

54 lines
1.1 KiB
Haskell
Raw Normal View History

2019-09-07 18:05:24 +00:00
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
2019-09-07 18:05:24 +00:00
module Types.Avatar where
import Data.ByteString
2019-09-07 18:05:24 +00:00
import qualified Data.Text as T
import Data.Word (Word8)
2019-09-07 18:05:24 +00:00
import Data.Aeson
import GHC.Generics
-- internal imports
import Classes
2019-09-07 18:05:24 +00:00
data Avatar = Avatar
{ avatarId :: Int
, avatarName :: T.Text
, avatarHash :: [Word8]
, avatarData :: [Word8]
2019-09-07 18:05:24 +00:00
}
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_)
2019-09-07 18:05:24 +00:00
data AvatarData = AvatarData
{ avatarDataName :: T.Text
, avatarDataData :: [Word8]
2019-09-07 18:05:24 +00:00
}
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_)