{-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeSynonymInstances #-} module TSN.Injuries where import Generics.Regular import Database.Persist.TH import Text.XML.HXT.Core share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| Listing team String teamno Int injuries String updated Bool deriving Show Message xml_file_id Int heading String category String sport String listings [Listing] time_stamp String deriving Show |] pickle_listing :: PU Listing pickle_listing = xpElem "listing" $ xpWrap (\(w,x,y,z) -> Listing w x y z, \l -> (listingTeam l, listingTeamno l, listingInjuries l, listingUpdated l)) $ xp4Tuple (xpElem "team" xpText) (xpElem "teamno" xpPrim) (xpElem "injuries" xpText) (xpElem "updated" xpPrim) instance XmlPickler Listing where xpickle = pickle_listing $(deriveAll ''Listing "PFListing") type instance PF Listing = PFListing pickle_message :: PU Message pickle_message = xpElem "message" $ xpWrap (\(u,v,w,x,y,z) -> Message u v w x y z, \m -> (messageXml_file_id m, messageHeading m, messageCategory m, messageSport m, messageListings m, messageTime_stamp m)) $ xp6Tuple (xpElem "XML_File_ID" xpPrim) (xpElem "heading" xpText) (xpElem "category" xpText) (xpElem "sport" xpText) (xpList pickle_listing) (xpElem "time_stamp" xpText) instance XmlPickler Message where xpickle = pickle_message $(deriveAll ''Message "PFMessage") type instance PF Message = PFMessage