X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FXML%2FMLBBoxScore.hs;h=e7672500517089479c75a1584b53d02c7a03f3b8;hb=1cecab83b93656aa08ef5128b4e3bd3b6385ac8d;hp=97f6a81d0c4b88215d9d67bb8313d69a2d6afc26;hpb=695787ae867853750b562feb7ef4e176958761e9;p=dead%2Fhtsn-import.git diff --git a/src/TSN/XML/MLBBoxScore.hs b/src/TSN/XML/MLBBoxScore.hs index 97f6a81..e767250 100644 --- a/src/TSN/XML/MLBBoxScore.hs +++ b/src/TSN/XML/MLBBoxScore.hs @@ -34,6 +34,7 @@ import Data.Data ( Data ) 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, @@ -60,7 +61,6 @@ import Text.XML.HXT.Core ( xpWrap ) -- Local imports. -import Generics ( Generic(..), to_tuple ) import TSN.Codegen ( tsn_codegen_config ) import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate ) import TSN.Picklers ( @@ -148,9 +148,9 @@ data Message = 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'. @@ -206,22 +206,24 @@ data MLBBoxScoreGameBreakdownXml = 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 = @@ -237,9 +239,9 @@ data MLBBoxScoreHomerunStatsListingXml = 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 @@ -273,26 +275,37 @@ instance FromXmlFk MLBBoxScoreHomerunStatsListingXml where 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 @@ -314,13 +327,7 @@ instance FromXmlFk MLBBoxScoreHomerunStatsListingPitcherXml where -- | 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 @@ -337,22 +344,33 @@ data MLBBoxScoreMiscellaneousGameInfoXml = MLBBoxScoreMiscellaneousGameInfoXml -- 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 @@ -369,26 +387,33 @@ instance FromXml MLBBoxScoreTeamBreakdownXml where -- '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) @@ -406,9 +431,9 @@ data MLBBoxScore_MLBBoxScoreTeamBreakdown = --- | For 'Generics.to_tuple'. +-- | For 'H.convert'. -- -instance Generic MLBBoxScoreRunsByInningsXml +instance H.HVector MLBBoxScoreRunsByInningsXml instance ToDb MLBBoxScoreRunsByInningsXml where @@ -430,11 +455,7 @@ instance FromXmlFk 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 @@ -457,34 +478,44 @@ data MLBBoxScoreMiscPitchingStatsXml = deriving (Eq, GHC.Generic, Show) --- | For 'Generics.to_tuple'. +-- | For 'H.convert'. -- -instance Generic MLBBoxScoreMiscPitchingStatsXml +instance H.HVector MLBBoxScoreMiscPitchingStatsXml -- * MLBBoxScoreMiscPitchingStatsIntentionalWalk -- | Database representation of an intentional walk. The weird --- prefixes avoid collisiont with the other batter/pitcher_ids, and +-- 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 } + _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 'Generics.to_tuple'. -instance Generic MLBBoxScoreMiscPitchingStatsIntentionalWalkXml +-- | For 'H.convert'. +-- +instance H.HVector MLBBoxScoreMiscPitchingStatsIntentionalWalkXml instance ToDb MLBBoxScoreMiscPitchingStatsIntentionalWalkXml where @@ -509,12 +540,7 @@ instance FromXmlFk MLBBoxScoreMiscPitchingStatsIntentionalWalkXml where -- to an 'MLBBoxScoreMiscPitchingStatsIntentionalWalk', we add the -- foreign key and copy everything else verbatim. -- - from_xml_fk fk MLBBoxScoreMiscPitchingStatsIntentionalWalkXml{..} = - MLBBoxScoreMiscPitchingStatsIntentionalWalk { - dbiw_mlb_box_scores_id = fk, - dbiw_batter_id = xml_iw_batter_id, - dbiw_pitcher_id = xml_iw_pitcher_id, - dbiw_number_of_times_walked = xml_iw_number_of_times_walked } + from_xml_fk = H.cons -- | This allows us to insert the XML representation @@ -526,13 +552,19 @@ 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 } + _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 @@ -556,12 +588,7 @@ instance FromXmlFk MLBBoxScoreMiscPitchingStatsHitByPitchXml where -- to an 'MLBBoxScoreMiscPitchingStatsHitByPitch', we add the -- foreign key and copy everything else verbatim. -- - from_xml_fk fk MLBBoxScoreMiscPitchingStatsHitByPitchXml{..} = - MLBBoxScoreMiscPitchingStatsHitByPitch { - dbhbp_mlb_box_scores_id = fk, - dbhbp_batter_id = xml_hbp_batter_id, - dbhbp_pitcher_id = xml_hbp_pitcher_id, - dbhbp_number_of_times_hit = xml_hbp_number_of_times_hit } + from_xml_fk = H.cons -- | This allows us to insert the XML representation @@ -570,17 +597,19 @@ instance FromXmlFk MLBBoxScoreMiscPitchingStatsHitByPitchXml where 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 -- @@ -670,7 +699,7 @@ mkPersist tsn_codegen_config [groundhog| constructors: - name: MLBBoxScoreMiscPitchingStatsIntentionalWalk fields: - - name: dbiw_mlb_box_scores_id + - name: _dbiw_mlb_box_scores_id reference: onDelete: cascade @@ -680,20 +709,20 @@ mkPersist tsn_codegen_config [groundhog| constructors: - name: MLBBoxScoreMiscPitchingStatsHitByPitch fields: - - name: dbhbp_mlb_box_scores_id + - 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 @@ -713,7 +742,7 @@ mkPersist tsn_codegen_config [groundhog| 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 @@ -727,7 +756,7 @@ mkPersist tsn_codegen_config [groundhog| constructors: - name: MLBBoxScoreRunsByInnings fields: - - name: db_mlb_box_scores_team_breakdowns_id + - name: _db_mlb_box_scores_team_breakdowns_id reference: onDelete: cascade @@ -760,7 +789,7 @@ mkPersist tsn_codegen_config [groundhog| 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) @@ -798,7 +827,7 @@ pickle_team_summary = 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 @@ -808,7 +837,7 @@ pickle_game_breakdown = 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 @@ -817,7 +846,7 @@ pickle_runs_by_innings = 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) @@ -838,7 +867,7 @@ pickle_home_team = pickle_batter :: PU MLBBoxScoreHomerunStatsListingBatter pickle_batter = xpElem "HRS_Batter_ID" $ - xpWrap (from_tuple, to_tuple) $ + xpWrap (from_tuple, H.convert) $ xp4Tuple (xpAttr "HRS_Batter_FirstName" $ xpText) (xpAttr "HRS_Batter_LastName" $ xpText) (xpAttr "RBIs" $ xpInt) @@ -850,7 +879,7 @@ pickle_batter = pickle_pitcher :: PU MLBBoxScoreHomerunStatsListingPitcherXml pickle_pitcher = xpElem "HRS_Pitcher_ID" $ - xpWrap (from_tuple, to_tuple) $ + xpWrap (from_tuple, H.convert) $ xp4Tuple (xpAttr "HRS_Homeruns_Off_Pitcher" $ xpInt) (xpAttr "HRS_Pitcher_FirstName" $ xpText) (xpAttr "HRS_Pitcher_LastName" $ xpText) @@ -862,7 +891,7 @@ pickle_pitcher = 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) @@ -878,7 +907,7 @@ pickle_homerun_stats_listings = 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 @@ -890,7 +919,7 @@ pickle_misc_pitching_stats = 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) @@ -902,7 +931,7 @@ pickle_intentional_walks = 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)