module Clckwrks.Media.Types where
import Data.Data (Data, Typeable)
import Data.IxSet (Indexable(..), ixSet, ixFun)
import Data.SafeCopy (SafeCopy, base, deriveSafeCopy)
import Data.Text (Text)
import Web.Routes (PathInfo(..))
newtype MediumId = MediumId { unMediumId :: Integer }
deriving (Eq, Ord, Read, Show, Data, Typeable, SafeCopy, PathInfo)
data MediumKind
= JPEG
| PNG
| GIF
deriving (Eq, Ord, Read, Show, Data, Typeable)
$(deriveSafeCopy 0 'base ''MediumKind)
mediumContentType :: MediumKind -> String
mediumContentType JPEG = "image/jpeg; charset=binary"
mediumContentType PNG = "image/png; charset=binary"
mediumContentType GIF = "image/gif; charset=binary"
data Medium
= Medium { mediumId :: MediumId
, uploadName :: FilePath
, mediumPath :: FilePath
, mediumKind :: MediumKind
}
deriving (Eq, Ord, Read, Show, Data, Typeable)
$(deriveSafeCopy 0 'base ''Medium)
data PreviewSize
= Tall
| Grande
| Venti
deriving (Eq, Ord, Read, Show, Data, Typeable)
$(deriveSafeCopy 0 'base ''PreviewSize)
instance Indexable Medium where
empty = ixSet [ ixFun ((:[]) . mediumId)
]