From e207228e7b7b47f4cbe16b578ce16cea009b15f9 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Mon, 20 Jan 2014 23:30:12 -0500 Subject: [PATCH] Update TSN.XML.InjuriesDetail for the new typeclass hierarchy. Add InjuriesDetail and InjuriesDetailListing to the database. Update the database schema diagram for Injuries_Detail_XML. --- doc/dbschema/Injuries_Detail_XML.png | Bin 30988 -> 72957 bytes src/TSN/XML/InjuriesDetail.hs | 325 +++++++++++++++++++-------- 2 files changed, 235 insertions(+), 90 deletions(-) diff --git a/doc/dbschema/Injuries_Detail_XML.png b/doc/dbschema/Injuries_Detail_XML.png index f4db18e03315a29072b9dd33a027e0301c989bdb..616f98ab9e30c247669f867d8c83b19013fe7830 100644 GIT binary patch literal 72957 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

Wp*-R?vzV~Ok(h5lX>Fw+5 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 literal 30988 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ƨc$lvpWg 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 diff --git a/src/TSN/XML/InjuriesDetail.hs b/src/TSN/XML/InjuriesDetail.hs index b51c19d..fee6ce2 100644 --- a/src/TSN/XML/InjuriesDetail.hs +++ b/src/TSN/XML/InjuriesDetail.hs @@ -1,6 +1,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} @@ -8,29 +9,27 @@ -- | Parse TSN XML for the DTD "Injuries_Detail_XML.dtd". Each -- document contains a root element \ that in turn -- contains zero or more \s (note: capitalization). The --- \s contain \s then contain the real --- meat; everything contained in the parent \ can also be --- found within the \s. --- --- The player listings will be mapped to a database table called --- \"injuries_detail_player_listings\" automatically. The root --- \"message\" and \"listing\" are not retained. +-- \s contain \s which then contain the +-- real meat. -- module TSN.XML.InjuriesDetail ( pickle_message, -- * Tests injuries_detail_tests, -- * WARNING: these are private but exported to silence warnings - PlayerListingConstructor(..) ) + InjuriesDetailConstructor(..), + InjuriesDetailListingConstructor(..), + InjuriesDetailListingPlayerListingConstructor(..) ) where -- System imports. +import Control.Monad ( forM_ ) import Data.Time ( UTCTime ) import Data.Tuple.Curry ( uncurryN ) import Database.Groundhog ( + DefaultKey, migrate ) import Database.Groundhog.TH ( - defaultCodegenConfig, groundhog, mkPersist ) import Test.Tasty ( TestTree, testGroup ) @@ -49,95 +48,239 @@ import Text.XML.HXT.Core ( xpWrap ) -- Local imports. -import TSN.Picklers( xp_date ) +import TSN.Codegen ( tsn_codegen_config ) import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate ) -import TSN.XmlImport ( XmlImport(..) ) -import Xml ( FromXml(..), pickle_unpickle, unpickleable ) +import TSN.Picklers( xp_date, xp_time_stamp ) +import TSN.XmlImport ( XmlImport(..), XmlImportFk(..) ) +import Xml ( + FromXml(..), + FromXmlFk(..), + ToDb(..), + pickle_unpickle, + unpickleable ) --- | Database representation of a \, the main type of --- element contains in Injuries_Detail_XML messages. -- -data PlayerListing = - PlayerListing { - team_id :: String, -- ^ TeamIDs are (apparently) three - -- characters long and not necessarily - -- numeric. Postgres imposes no performance - -- penalty on a lengthless text field, - -- so we ignore the likely upper bound of - -- three characters. - player_id :: Int, - date :: UTCTime, - pos :: String, - name :: String, - injury :: String, - status :: String, - fantasy :: Maybe String, -- ^ Nobody knows what this is. - injured :: Bool, - injury_type :: String -- ^ "type" is a reserved keyword so we can't use it - } - deriving (Eq, Show) +-- Data types +-- + +-- * InjuriesDetail/Message -instance FromXml PlayerListing where - -- | The DB analogue of a 'PlayerListing' is... itself! - type Db PlayerListing = PlayerListing - -- | To convert between a 'PlayerListing' and a 'PlayerListing', - -- we do nothing. - from_xml = id +-- | XML representation of the top-level \ element. These +-- are not stored; the data type is used only for parsing. +-- +data Message = + Message { + xml_xml_file_id :: Int, + xml_heading :: String, + xml_category :: String, + xml_sport :: String, + xml_listings :: [InjuriesDetailListingXml], + xml_time_stamp :: UTCTime } + deriving (Eq, Show) --- | This lets us call 'insert_xml' on a 'PlayerListing' without --- having to explicitly convert it to its database analogue first. +-- | Database representation of a 'Message'. -- -instance XmlImport PlayerListing +data InjuriesDetail = + InjuriesDetail { + db_sport :: String, + db_time_stamp :: UTCTime } + deriving (Eq, Show) + +instance ToDb Message where + -- | The database representation of a 'Message' is an + -- 'InjuriesDetail'. + type Db Message = InjuriesDetail + +instance FromXml Message where + -- | To convert a 'Message' into an 'InjuriesDetail', we simply drop + -- a few fields. + -- + from_xml Message{..} = + InjuriesDetail { + db_sport = xml_sport, + db_time_stamp = xml_time_stamp } + + +-- | This allows us to call 'insert_xml' directly on the XML +-- representation. +instance XmlImport Message + + + +-- * InjuriesDetailListing/InjuriesDetailListingXml + +data InjuriesDetailListing = + InjuriesDetailListing { + db_injuries_detail_id :: DefaultKey InjuriesDetail, + db_team_id :: String, + db_full_name :: String } -- | XML incarnation of a \ element. We don't store these; -- the data type is used only for parsing. -- -data Listing = - Listing { - listing_team_id :: String -- ^ Avoid conflict with PlayerListing's team_id. - -- TeamIDs are (apparently) three characters - -- long and not necessarily numeric. - , full_name :: String, -- ^ Team full name - player_listings :: [PlayerListing] } +data InjuriesDetailListingXml = + InjuriesDetailListingXml { + xml_team_id :: String, -- ^ TeamIDs are (apparently) three + -- characters long and not necessarily + -- numeric. + + xml_full_name :: String, -- ^ Team full name + xml_player_listings :: [InjuriesDetailListingPlayerListingXml] } deriving (Eq, Show) +instance ToDb InjuriesDetailListingXml where + type Db InjuriesDetailListingXml = InjuriesDetailListing --- | XML representation of the top-level \ element. These --- are not stored; the data type is used only for parsing. +instance FromXmlFk InjuriesDetailListingXml where + type Parent InjuriesDetailListingXml = InjuriesDetail + + from_xml_fk fk InjuriesDetailListingXml{..} = + InjuriesDetailListing { + db_injuries_detail_id = fk, + db_team_id = xml_team_id, + db_full_name = xml_full_name } + +instance XmlImportFk InjuriesDetailListingXml + + +-- * InjuriesDetailListingPlayerListing + +-- | XML representation of a \, the main type of +-- element contains in Injuries_Detail_XML messages. -- -data Message = - Message { - xml_file_id :: Int, - heading :: String, - category :: String, - sport :: String, - listings :: [Listing], - time_stamp :: String } +data InjuriesDetailListingPlayerListingXml = + InjuriesDetailListingPlayerListingXml { + xml_player_team_id :: String, -- ^ TeamIDs are (apparently) three + -- characters long and not + -- necessarily numeric. Postgres + -- imposes no performance penalty + -- on a lengthless text field, so + -- we ignore the likely upper + -- bound of three characters. + -- We add the \"player\" to avoid conflict + -- with 'InjuriesDetailListingXml'. + xml_player_id :: Int, + xml_date :: UTCTime, + xml_pos :: String, + xml_name :: String, + xml_injury :: String, + xml_status :: String, + xml_fantasy :: Maybe String, -- ^ Nobody knows what this is. + xml_injured :: Bool, + xml_type :: String } deriving (Eq, Show) + + +-- | Database representation of a +-- 'InjuriesDetailListingPlayerListingXml'. We drop the team_id +-- because it's redundant. +-- +data InjuriesDetailListingPlayerListing = + InjuriesDetailListingPlayerListing { + db_injuries_detail_listings_id :: DefaultKey InjuriesDetailListing, + db_player_id :: Int, + db_date :: UTCTime, + db_pos :: String, + db_name :: String, + db_injury :: String, + db_status :: String, + db_fantasy :: Maybe String, -- ^ Nobody knows what this is. + db_injured :: Bool, + db_type :: String } + + +instance ToDb InjuriesDetailListingPlayerListingXml where + -- | The DB analogue of a 'InjuriesDetailListingPlayerListingXml' is + -- 'InjuriesDetailListingPlayerListing'. + type Db InjuriesDetailListingPlayerListingXml = + InjuriesDetailListingPlayerListing + +instance FromXmlFk InjuriesDetailListingPlayerListingXml where + type Parent InjuriesDetailListingPlayerListingXml = InjuriesDetailListing + + -- | To convert between a 'InjuriesDetailListingPlayerListingXml' + -- and a 'InjuriesDetailListingPlayerListingXml', we do nothing. + from_xml_fk fk InjuriesDetailListingPlayerListingXml{..} = + InjuriesDetailListingPlayerListing { + db_injuries_detail_listings_id = fk, + db_player_id = xml_player_id, + db_date = xml_date, + db_pos = xml_pos, + db_name = xml_name, + db_injury = xml_injury, + db_status = xml_status, + db_fantasy = xml_fantasy, + db_injured = xml_injured, + db_type = xml_type } + +-- | This lets us call 'insert_xml' on a +-- 'InjuriesDetailListingPlayerListingXml' without having to +-- explicitly convert it to its database analogue first. +-- +instance XmlImportFk InjuriesDetailListingPlayerListingXml + + +-- +-- Database stuff +-- + instance DbImport Message where - -- | To import a 'Message', we import all of its 'PlayerListing's, - -- which we have to dig out of its 'Listing's. + -- | To import a 'Message', we import all of its + -- 'InjuriesDetailListingPlayerListingXml's, which we have to dig out of its + -- 'Listing's. dbimport msg = do - mapM_ insert_xml (concatMap player_listings $ listings msg) - return ImportSucceeded + msg_id <- insert_xml msg - dbmigrate _ = run_dbmigrate $ migrate (undefined :: PlayerListing) + forM_ (xml_listings msg) $ \listing -> do + l_id <- insert_xml_fk msg_id listing + mapM_ (insert_xml_fk_ l_id) (xml_player_listings listing) + return ImportSucceeded -mkPersist defaultCodegenConfig [groundhog| -- entity: PlayerListing - dbName: injuries_detail_player_listings + dbmigrate _ = + run_dbmigrate $ do + migrate (undefined :: InjuriesDetail) + migrate (undefined :: InjuriesDetailListing) + migrate (undefined :: InjuriesDetailListingPlayerListing) + + +mkPersist tsn_codegen_config [groundhog| +- entity: InjuriesDetail + dbName: injuries_detail + +- entity: InjuriesDetailListing + dbName: injuries_detail_listings + constructors: + - name: InjuriesDetailListing + fields: + - name: db_injuries_detail_id + reference: + onDelete: cascade + +- entity: InjuriesDetailListingPlayerListing + dbName: injuries_detail_listings_player_listings + constructors: + - name: InjuriesDetailListingPlayerListing + fields: + - name: db_injuries_detail_listings_id + reference: + onDelete: cascade |] --- | Convert 'PlayerListing's to/from XML. + +-- +-- Pickling +-- + +-- | Convert 'InjuriesDetailListingPlayerListingXml's to/from XML. -- -pickle_player_listing :: PU PlayerListing +pickle_player_listing :: PU InjuriesDetailListingPlayerListingXml pickle_player_listing = xpElem "PlayerListing" $ xpWrap (from_tuple, to_tuple) $ @@ -152,22 +295,22 @@ pickle_player_listing = (xpElem "Injured" xpPrim) (xpElem "Type" xpText) where - from_tuple = uncurryN PlayerListing - to_tuple pl = (team_id pl, - player_id pl, - date pl, - pos pl, - name pl, - injury pl, - status pl, - fantasy pl, - injured pl, - injury_type pl) + from_tuple = uncurryN InjuriesDetailListingPlayerListingXml + to_tuple pl = (xml_player_team_id pl, + xml_player_id pl, + xml_date pl, + xml_pos pl, + xml_name pl, + xml_injury pl, + xml_status pl, + xml_fantasy pl, + xml_injured pl, + xml_type pl) -- | Convert 'Listing's to/from XML. -- -pickle_listing :: PU Listing +pickle_listing :: PU InjuriesDetailListingXml pickle_listing = xpElem "Listing" $ xpWrap (from_tuple, to_tuple) $ @@ -175,8 +318,10 @@ pickle_listing = (xpElem "FullName" xpText) (xpList pickle_player_listing) where - from_tuple = uncurryN Listing - to_tuple l = (listing_team_id l, full_name l, player_listings l) + from_tuple = uncurryN InjuriesDetailListingXml + to_tuple l = (xml_team_id l, + xml_full_name l, + xml_player_listings l) -- | Convert 'Message's to/from XML. @@ -190,15 +335,15 @@ pickle_message = (xpElem "category" xpText) (xpElem "sport" xpText) (xpList pickle_listing) - (xpElem "time_stamp" xpText) + (xpElem "time_stamp" xp_time_stamp) where from_tuple = uncurryN Message - to_tuple m = (xml_file_id m, - heading m, - category m, - sport m, - listings m, - time_stamp m) + to_tuple m = (xml_xml_file_id m, + xml_heading m, + xml_category m, + xml_sport m, + xml_listings m, + xml_time_stamp m) -- -- 2.44.2