module Type.Post where
import Data.Aeson
import Data.JSON.Schema
import Data.Text (Text)
import Data.Time (UTCTime)
import Data.Typeable
import GHC.Generics
import Generics.Regular
import Generics.Regular.XmlPickler
import Text.XML.HXT.Arrow.Pickle
import qualified Type.User as User
type Id = Int
type Title = Text
data Post = Post
{ id :: Id
, author :: User.Name
, createdTime :: UTCTime
, title :: Title
, content :: Text
} deriving (Eq, Generic, Ord, Show, Typeable)
deriveAll ''Post "PFPost"
type instance PF Post = PFPost
instance XmlPickler Post where xpickle = gxpickle
instance JSONSchema Post where schema = gSchema
instance ToJSON Post
instance FromJSON Post
instance XmlPickler UTCTime where xpickle = xpPrim