MLBBoxScoreHomerunStatsListingConstructor(..),
MLBBoxScoreHomerunStatsListingPitcherConstructor(..),
MLBBoxScoreMiscellaneousGameInfo(..),
- MLBBoxScoreMiscPitchingStats(..), -- can go eventually
+ MLBBoxScoreMiscPitchingStatsHitByPitchConstructor(..),
+ MLBBoxScoreMiscPitchingStatsIntentionalWalkConstructor(..),
MLBBoxScoreRunsByInningsConstructor(..),
MLBBoxScoreTeamBreakdownConstructor(..),
MLBBoxScoreTeamSummary(..) -- can go eventually
import Data.Maybe ( fromMaybe )
import Data.Time ( UTCTime(..) )
import Data.Tuple.Curry ( uncurryN )
+import qualified Data.Vector.HFixed as H ( HVector, cons, convert, tail )
import Data.Typeable ( Typeable )
import Database.Groundhog (
insert,
xpWrap )
-- Local imports.
-import Generics ( Generic(..), to_tuple )
import TSN.Codegen ( tsn_codegen_config )
import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate )
import TSN.Picklers (
db_game_time :: UTCTime,
db_game_number :: Int,
db_capacity :: Int,
+ db_wild_pitches :: Maybe Int, -- From misc pitching stats
db_title :: String,
db_time_stamp :: UTCTime }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'.
+-- | For 'H.convert'.
--
-instance Generic Message
+instance H.HVector Message
instance ToDb Message where
-- | The database analogue of a 'Message' is a 'MLBBoxScore'.
db_game_time = make_game_time,
db_game_number = xml_game_number,
db_capacity = xml_capacity,
+ db_wild_pitches = xml_wild_pitches xml_misc_pitching_stats,
db_title = xml_title,
db_time_stamp = xml_time_stamp }
where
xml_home_team :: MLBBoxScoreTeamBreakdownXml }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'
+-- | For 'H.convert'
--
-instance Generic MLBBoxScoreGameBreakdownXml
+instance H.HVector MLBBoxScoreGameBreakdownXml
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreHomerunStatsListingBatter =
MLBBoxScoreHomerunStatsListingBatter {
- db_batter_first_name :: String,
- db_batter_last_name :: String,
- db_batter_rbis :: Int,
- db_batter_id :: Int }
+ _db_batter_first_name :: String,
+ _db_batter_last_name :: String,
+ _db_batter_rbis :: Int,
+ _db_batter_id :: Int }
deriving (Data, Eq, GHC.Generic, Show, Typeable)
--- | For 'Generics.to_tuple'
+-- | For 'H.convert'
--
-instance Generic MLBBoxScoreHomerunStatsListingBatter
+instance H.HVector MLBBoxScoreHomerunStatsListingBatter
data MLBBoxScoreHomerunStatsListing =
xml_pitchers :: [MLBBoxScoreHomerunStatsListingPitcherXml] }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'
+-- | For 'H.convert'
--
-instance Generic MLBBoxScoreHomerunStatsListingXml
+instance H.HVector MLBBoxScoreHomerunStatsListingXml
instance Child MLBBoxScoreHomerunStatsListingXml where
-- | Each 'MLBBoxScoreHomerunStatsListingXml' is contained in (i.e. has a
instance XmlImportFk MLBBoxScoreHomerunStatsListingXml
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreHomerunStatsListingPitcher =
MLBBoxScoreHomerunStatsListingPitcher {
- db_mlb_box_score_homerun_stats_listings_id ::
+ _db_mlb_box_score_homerun_stats_listings_id ::
DefaultKey MLBBoxScoreHomerunStatsListing,
- db_homeruns_off_pitcher :: Int,
- db_pitcher_first_name :: String,
- db_pitcher_last_name :: String,
- db_pitchers_pitcher_id :: Int }
+ _db_homeruns_off_pitcher :: Int,
+ _db_pitcher_first_name :: String,
+ _db_pitcher_last_name :: String,
+ _db_pitchers_pitcher_id :: Int }
+ deriving ( GHC.Generic )
+
+
+-- | For 'H.cons' and 'H.convert'.
+--
+instance H.HVector MLBBoxScoreHomerunStatsListingPitcher
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreHomerunStatsListingPitcherXml =
MLBBoxScoreHomerunStatsListingPitcherXml {
- xml_homeruns_off_pitcher :: Int,
- xml_pitcher_first_name :: String,
- xml_pitcher_last_name :: String,
- xml_pitchers_pitcher_id :: Int }
+ _xml_homeruns_off_pitcher :: Int,
+ _xml_pitcher_first_name :: String,
+ _xml_pitcher_last_name :: String,
+ _xml_pitchers_pitcher_id :: Int }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'
+-- | For 'H.convert'
--
-instance Generic MLBBoxScoreHomerunStatsListingPitcherXml
+instance H.HVector MLBBoxScoreHomerunStatsListingPitcherXml
instance Child MLBBoxScoreHomerunStatsListingPitcherXml where
-- | Each 'MLBBoxScoreHomerunStatsListingPitcherXml' is contained in
-- | To convert an 'MLBBoxScoreHomerunStatsListingPitcherXml' to an
-- 'MLBBoxScoreHomerunStatsListingPitcher', we add the foreign key.
--
- from_xml_fk fk MLBBoxScoreHomerunStatsListingPitcherXml{..} =
- MLBBoxScoreHomerunStatsListingPitcher {
- db_mlb_box_score_homerun_stats_listings_id = fk,
- db_homeruns_off_pitcher = xml_homeruns_off_pitcher,
- db_pitcher_first_name = xml_pitcher_first_name,
- db_pitcher_last_name = xml_pitcher_last_name,
- db_pitchers_pitcher_id = xml_pitchers_pitcher_id }
+ from_xml_fk = H.cons
-- | This allows us to insert the XML representation
-- Team Breakdown
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreTeamBreakdown =
MLBBoxScoreTeamBreakdown {
- db_runs :: Int,
- db_hits :: Int,
- db_errors :: Int }
+ _db_runs :: Int,
+ _db_hits :: Int,
+ _db_errors :: Int }
+ deriving ( GHC.Generic )
+
+-- | For 'H.cons' and 'H.convert'.
+--
+instance H.HVector MLBBoxScoreTeamBreakdown
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreTeamBreakdownXml =
MLBBoxScoreTeamBreakdownXml {
xml_runs_by_innings :: [MLBBoxScoreRunsByInningsXml],
- xml_runs :: Int,
- xml_hits :: Int,
- xml_errors :: Int }
+ _xml_runs :: Int,
+ _xml_hits :: Int,
+ _xml_errors :: Int }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'.
-instance Generic MLBBoxScoreTeamBreakdownXml
+-- | For 'H.convert'.
+instance H.HVector MLBBoxScoreTeamBreakdownXml
instance ToDb MLBBoxScoreTeamBreakdownXml where
-- | The database analogue of a 'MLBBoxScoreTeamBreakdownXml' is
-- 'MLBBoxScoreTeamBreakdown', we just drop the
-- 'xml_runs_by_innings'.
--
- from_xml MLBBoxScoreTeamBreakdownXml{..} =
- MLBBoxScoreTeamBreakdown {
- db_runs = xml_runs,
- db_hits = xml_hits,
- db_errors = xml_errors }
+ from_xml = H.tail
instance XmlImport MLBBoxScoreTeamBreakdownXml
-- Runs by innings
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreRunsByInnings =
MLBBoxScoreRunsByInnings {
- db_mlb_box_scores_team_breakdowns_id :: DefaultKey
+ _db_mlb_box_scores_team_breakdowns_id :: DefaultKey
MLBBoxScoreTeamBreakdown,
- db_runs_by_innings_inning_number :: Int,
- db_runs_by_innings_runs :: Int }
+ _db_runs_by_innings_inning_number :: Int,
+ _db_runs_by_innings_runs :: Int }
+ deriving ( GHC.Generic )
+
+-- | For 'H.cons' and 'H.convert'.
+instance H.HVector MLBBoxScoreRunsByInnings
+
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreRunsByInningsXml =
MLBBoxScoreRunsByInningsXml {
- xml_runs_by_innings_inning_number :: Int,
- xml_runs_by_innings_runs :: Int }
+ _xml_runs_by_innings_inning_number :: Int,
+ _xml_runs_by_innings_runs :: Int }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'.
+-- | For 'H.convert'.
--
-instance Generic MLBBoxScoreRunsByInningsXml
+instance H.HVector MLBBoxScoreRunsByInningsXml
instance ToDb MLBBoxScoreRunsByInningsXml where
-- 'MLBBoxScoreRunsByInnings', we add the foreign key and copy
-- everything else verbatim.
--
- from_xml_fk fk MLBBoxScoreRunsByInningsXml{..} =
- MLBBoxScoreRunsByInnings {
- db_mlb_box_scores_team_breakdowns_id = fk,
- db_runs_by_innings_inning_number = xml_runs_by_innings_inning_number,
- db_runs_by_innings_runs = xml_runs_by_innings_runs }
+ from_xml_fk = H.cons
-- | This allows us to insert the XML representation
-
-data MLBBoxScoreMiscPitchingStats = MLBBoxScoreMiscPitchingStats
+-- | The type representing \<Misc_Pitching_Stats\> XML elements. It
+-- has no associated database type; the 'xml_wild_pitches' are
+-- stored directly in the 'MLBBoxScore', and the two linked tables
+-- are treated as children of the 'MLBBoxScore'.
+--
data MLBBoxScoreMiscPitchingStatsXml =
MLBBoxScoreMiscPitchingStatsXml {
xml_wild_pitches :: Maybe Int,
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'.
-instance Generic MLBBoxScoreMiscPitchingStatsXml
+-- | For 'H.convert'.
+--
+instance H.HVector MLBBoxScoreMiscPitchingStatsXml
+
+
+-- * MLBBoxScoreMiscPitchingStatsIntentionalWalk
+
+-- | Database representation of an intentional walk. The weird
+-- prefixes avoid collisions with the other batter/pitcher_ids, and
+-- still get mangled properly by Groundhog.
+--
+-- The leading underscores prevent unused field warnings.
+--
+data MLBBoxScoreMiscPitchingStatsIntentionalWalk =
+ MLBBoxScoreMiscPitchingStatsIntentionalWalk {
+ _dbiw_mlb_box_scores_id :: DefaultKey MLBBoxScore,
+ _dbiw_batter_id :: Int,
+ _dbiw_pitcher_id :: Int,
+ _dbiw_number_of_times_walked :: Int }
+ deriving ( GHC.Generic )
+-- | For 'H.cons' and 'H.convert'.
+--
+instance H.HVector MLBBoxScoreMiscPitchingStatsIntentionalWalk
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreMiscPitchingStatsIntentionalWalkXml =
MLBBoxScoreMiscPitchingStatsIntentionalWalkXml {
- xml_iw_batter_id :: Int,
- xml_iw_pitcher_id :: Int,
- xml_iw_number_of_times_walked :: Int }
+ _xml_iw_batter_id :: Int,
+ _xml_iw_pitcher_id :: Int,
+ _xml_iw_number_of_times_walked :: Int }
deriving (Eq, GHC.Generic, Show)
+-- | For 'H.convert'.
+--
+instance H.HVector MLBBoxScoreMiscPitchingStatsIntentionalWalkXml
+
+
+instance ToDb MLBBoxScoreMiscPitchingStatsIntentionalWalkXml where
+ -- | The database analogue of a
+ -- 'MLBBoxScoreMiscPitchingStatsIntentionalWalkXml' is a
+ -- 'MLBBoxScoreMiscPitchingStatsIntentionalWalk'.
+ --
+ type Db MLBBoxScoreMiscPitchingStatsIntentionalWalkXml =
+ MLBBoxScoreMiscPitchingStatsIntentionalWalk
+
--- | For 'Generics.to_tuple'.
-instance Generic MLBBoxScoreMiscPitchingStatsIntentionalWalkXml
+instance Child MLBBoxScoreMiscPitchingStatsIntentionalWalkXml where
+ -- | Each 'MLBBoxScoreMiscPitchingStatsIntentionalWalkXml' is
+ -- contained in (i.e. has a foreign key to) a 'MLBBoxScore'.
+ --
+ type Parent MLBBoxScoreMiscPitchingStatsIntentionalWalkXml =
+ MLBBoxScore
+
+
+instance FromXmlFk MLBBoxScoreMiscPitchingStatsIntentionalWalkXml where
+ -- | To convert an 'MLBBoxScoreMiscPitchingStatsIntentionalWalkXml'
+ -- to an 'MLBBoxScoreMiscPitchingStatsIntentionalWalk', we add the
+ -- foreign key and copy everything else verbatim.
+ --
+ from_xml_fk = H.cons
+-- | This allows us to insert the XML representation
+-- 'MLBBoxScoreMiscPitchingStatsIntentionalWalkXml' directly.
+--
+instance XmlImportFk MLBBoxScoreMiscPitchingStatsIntentionalWalkXml
+
+
+
+-- * MLBBoxScoreMiscPitchingStatsHitByPitchXml
+
+-- | The leading underscores prevent unused field warnings.
+--
+data MLBBoxScoreMiscPitchingStatsHitByPitch =
+ MLBBoxScoreMiscPitchingStatsHitByPitch {
+ _dbhbp_mlb_box_scores_id :: DefaultKey MLBBoxScore,
+ _dbhbp_batter_id :: Int,
+ _dbhbp_pitcher_id :: Int,
+ _dbhbp_number_of_times_hit :: Int }
+ deriving ( GHC.Generic )
+
+-- | For 'H.cons' and 'H.convert'.
+--
+instance H.HVector MLBBoxScoreMiscPitchingStatsHitByPitch
+
+instance ToDb MLBBoxScoreMiscPitchingStatsHitByPitchXml where
+ -- | The database analogue of a
+ -- 'MLBBoxScoreMiscPitchingStatsHitByPitchXml' is a
+ -- 'MLBBoxScoreMiscPitchingStatsHitByPitch'.
+ --
+ type Db MLBBoxScoreMiscPitchingStatsHitByPitchXml =
+ MLBBoxScoreMiscPitchingStatsHitByPitch
+
+
+instance Child MLBBoxScoreMiscPitchingStatsHitByPitchXml where
+ -- | Each 'MLBBoxScoreMiscPitchingStatsHitByPitchXml' is
+ -- contained in (i.e. has a foreign key to) a 'MLBBoxScore'.
+ --
+ type Parent MLBBoxScoreMiscPitchingStatsHitByPitchXml =
+ MLBBoxScore
+
+
+instance FromXmlFk MLBBoxScoreMiscPitchingStatsHitByPitchXml where
+ -- | To convert an 'MLBBoxScoreMiscPitchingStatsHitByPitchXml'
+ -- to an 'MLBBoxScoreMiscPitchingStatsHitByPitch', we add the
+ -- foreign key and copy everything else verbatim.
+ --
+ from_xml_fk = H.cons
+
+
+-- | This allows us to insert the XML representation
+-- 'MLBBoxScoreMiscPitchingStatsHitByPitchXml' directly.
+--
+instance XmlImportFk MLBBoxScoreMiscPitchingStatsHitByPitchXml
+
+
+-- | The leading underscores prevent unused field warnings.
+--
data MLBBoxScoreMiscPitchingStatsHitByPitchXml =
MLBBoxScoreMiscPitchingStatsHitByPitchXml {
- xml_hbp_batter_id :: Int,
- xml_hbp_pitcher_id :: Int,
- xml_hbp_number_of_times_hit :: Int }
+ _xml_hbp_batter_id :: Int,
+ _xml_hbp_pitcher_id :: Int,
+ _xml_hbp_number_of_times_hit :: Int }
deriving (Eq, GHC.Generic, Show)
--- | For 'Generics.to_tuple'.
+-- | For 'H.convert'.
--
-instance Generic MLBBoxScoreMiscPitchingStatsHitByPitchXml
+instance H.HVector MLBBoxScoreMiscPitchingStatsHitByPitchXml
--
dbmigrate _ =
run_dbmigrate $ do
migrate (undefined :: MLBBoxScore)
+ migrate (undefined :: MLBBoxScoreMiscPitchingStatsIntentionalWalk)
+ migrate (undefined :: MLBBoxScoreMiscPitchingStatsHitByPitch)
+ migrate (undefined :: MLBBoxScoreHomerunStatsListing)
+ migrate (undefined :: MLBBoxScoreHomerunStatsListingPitcher)
+ migrate (undefined :: MLBBoxScoreTeamBreakdown)
+ migrate (undefined :: MLBBoxScoreRunsByInnings)
+ migrate (undefined :: MLBBoxScore_MLBBoxScoreTeamBreakdown)
-- | We insert the message.
dbimport m = do
-- And all of its pitchers
forM_ (xml_pitchers listing) $ insert_xml_fk listing_id
+ -- We have two tables of pitching stats that need to be keyed to
+ -- the message, too.
+ let iws = xml_intentional_walks (xml_misc_pitching_stats m)
+ forM_ iws $ insert_xml_fk_ msg_id
+
+ let hbps = xml_hits_by_pitch (xml_misc_pitching_stats m)
+ forM_ hbps $ insert_xml_fk_ msg_id
+
return ImportSucceeded
fields: [db_xml_file_id]
+
+- entity: MLBBoxScoreMiscPitchingStatsIntentionalWalk
+ dbName: mlb_box_scores_misc_pitching_stats_intentional_walks
+ constructors:
+ - name: MLBBoxScoreMiscPitchingStatsIntentionalWalk
+ fields:
+ - name: _dbiw_mlb_box_scores_id
+ reference:
+ onDelete: cascade
+
+
+- entity: MLBBoxScoreMiscPitchingStatsHitByPitch
+ dbName: mlb_box_scores_misc_pitching_stats_hits_by_pitch
+ constructors:
+ - name: MLBBoxScoreMiscPitchingStatsHitByPitch
+ fields:
+ - name: _dbhbp_mlb_box_scores_id
+ reference:
+ onDelete: cascade
+
+
- embedded: MLBBoxScoreHomerunStatsListingBatter
fields:
- - name: db_batter_first_name
+ - name: _db_batter_first_name
dbName: batter_first_name
- - name: db_batter_last_name
+ - name: _db_batter_last_name
dbName: batter_last_name
- - name: db_batter_rbis
+ - name: _db_batter_rbis
dbName: batter_rbis
- - name: db_batter_id
+ - name: _db_batter_id
dbName: batter_id
- entity: MLBBoxScoreHomerunStatsListing
constructors:
- name: MLBBoxScoreHomerunStatsListingPitcher
fields:
- - name: db_mlb_box_score_homerun_stats_listings_id
+ - name: _db_mlb_box_score_homerun_stats_listings_id
reference:
onDelete: cascade
constructors:
- name: MLBBoxScoreRunsByInnings
fields:
- - name: db_mlb_box_scores_team_breakdowns_id
+ - name: _db_mlb_box_scores_team_breakdowns_id
reference:
onDelete: cascade
pickle_message :: PU Message
pickle_message =
xpElem "message" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xp23Tuple (xpElem "XML_File_ID" xpInt)
(xpElem "heading" xpText)
(xpElem "category" xpText)
pickle_team_summary :: PU MLBBoxScoreTeamSummaryXml
pickle_team_summary =
- xpElem "Team_Summary" $ xpWrap (from_tuple, to_tuple') $ xpUnit
+ xpElem "Team_Summary" $ xpWrap (from_tuple, to_tuple') xpUnit
where
from_tuple _ = MLBBoxScoreTeamSummaryXml
to_tuple' _ = ()
pickle_game_breakdown :: PU MLBBoxScoreGameBreakdownXml
pickle_game_breakdown =
xpElem "Game_Breakdown" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpPair pickle_away_team
pickle_home_team
where
pickle_runs_by_innings :: PU MLBBoxScoreRunsByInningsXml
pickle_runs_by_innings =
xpElem "Runs_By_Innings" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpPair (xpAttr "Inning" xpInt)
xpInt
where
pickle_team :: PU MLBBoxScoreTeamBreakdownXml
pickle_team =
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xp4Tuple (xpList pickle_runs_by_innings)
(xpElem "Runs" xpInt)
(xpElem "Hits" xpInt)
pickle_batter :: PU MLBBoxScoreHomerunStatsListingBatter
pickle_batter =
xpElem "HRS_Batter_ID" $
- xpWrap (from_tuple, to_tuple) $
- xp4Tuple (xpAttr "HRS_Batter_FirstName" $ xpText)
- (xpAttr "HRS_Batter_LastName" $ xpText)
- (xpAttr "RBIs" $ xpInt)
+ xpWrap (from_tuple, H.convert) $
+ xp4Tuple (xpAttr "HRS_Batter_FirstName" xpText)
+ (xpAttr "HRS_Batter_LastName" xpText)
+ (xpAttr "RBIs" xpInt)
xpInt
where
from_tuple = uncurryN MLBBoxScoreHomerunStatsListingBatter
pickle_pitcher :: PU MLBBoxScoreHomerunStatsListingPitcherXml
pickle_pitcher =
xpElem "HRS_Pitcher_ID" $
- xpWrap (from_tuple, to_tuple) $
- xp4Tuple (xpAttr "HRS_Homeruns_Off_Pitcher" $ xpInt)
- (xpAttr "HRS_Pitcher_FirstName" $ xpText)
- (xpAttr "HRS_Pitcher_LastName" $ xpText)
+ xpWrap (from_tuple, H.convert) $
+ xp4Tuple (xpAttr "HRS_Homeruns_Off_Pitcher" xpInt)
+ (xpAttr "HRS_Pitcher_FirstName" xpText)
+ (xpAttr "HRS_Pitcher_LastName" xpText)
xpInt
where
from_tuple = uncurryN MLBBoxScoreHomerunStatsListingPitcherXml
pickle_homerun_stats_listing :: PU MLBBoxScoreHomerunStatsListingXml
pickle_homerun_stats_listing =
xpElem "HRS_Listing" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpTriple pickle_batter
(xpElem "Season_Homeruns" xpInt)
(xpList pickle_pitcher)
pickle_misc_pitching_stats :: PU MLBBoxScoreMiscPitchingStatsXml
pickle_misc_pitching_stats =
xpElem "Misc_Pitching_Stats" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpTriple (xpOption $ xpElem "Wild_Pitches" xpInt)
pickle_intentional_walks
pickle_hits_by_pitch
pickle_intentional_walks :: PU [MLBBoxScoreMiscPitchingStatsIntentionalWalkXml]
pickle_intentional_walks =
xpElem "Intentional_Walks" $ xpList $ xpElem "IW_Listing" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpTriple (xpElem "IW_Batter_ID" xpInt)
(xpElem "IW_Pitcher_ID" xpInt)
(xpElem "IW_Number_Of_Times_Walked" xpInt)
pickle_hits_by_pitch :: PU [MLBBoxScoreMiscPitchingStatsHitByPitchXml]
pickle_hits_by_pitch =
xpElem "Hit_By_Pitch" $ xpList $ xpElem "HBP_Listing" $
- xpWrap (from_tuple, to_tuple) $
+ xpWrap (from_tuple, H.convert) $
xpTriple (xpElem "HBP_Batter_ID" xpInt)
(xpElem "HBP_Pitcher_ID" xpInt)
(xpElem "HBP_Number_Of_Times_Hit" xpInt)
pickle_miscellaneous_game_info :: PU MLBBoxScoreMiscellaneousGameInfoXml
pickle_miscellaneous_game_info =
- xpElem "Miscelaneous_Game_Info" $ xpWrap (from_tuple, to_tuple') $ xpUnit
+ xpElem "Miscelaneous_Game_Info" $ xpWrap (from_tuple, to_tuple') xpUnit
where
from_tuple _ = MLBBoxScoreMiscellaneousGameInfoXml
to_tuple' _ = ()