+-- * AutoRacingResultsRaceInformation / AutoRacingResultsRaceInformationXml
+
+-- | The \<Most_Laps_Leading\> child of \<Race_Information\> always
+-- contains exactly three fields, so we just embed those three into
+-- the 'AutoRacingResultsRaceInformation' type. We (pointlessly) use
+-- the \"db_\" prefix since our field namer is going to strip of
+-- everything before the first underscore.
+--
+data MostLapsLeading =
+ MostLapsLeading {
+ db_most_laps_leading_driver_id :: Int,
+ db_most_laps_leading_driver :: String,
+ db_most_laps_leading_number_of_laps :: Int }
+ deriving (Data, Eq, Show, Typeable)
+
+
+-- | Database representation of a \<Race_Information\> contained within a
+-- \<Message\>.
+--
+data AutoRacingResultsRaceInformation =
+ AutoRacingResultsRaceInformation {
+ -- Note the apostrophe to disambiguate it from the
+ -- AutoRacingResultsListing filed.
+ db_auto_racing_results_id' :: DefaultKey AutoRacingResults,
+ db_track_length :: Double,
+ db_track_length_kph :: Double,
+ db_laps :: Int,
+ db_average_speed_mph :: Maybe Double,
+ db_average_speed_kph :: Maybe Double,
+ db_average_speed :: Maybe Double,
+ db_time_of_race :: Maybe String,
+ db_margin_of_victory :: Maybe String,
+ db_cautions :: Maybe String,
+ db_lead_changes :: Maybe String,
+ db_lap_leaders :: Maybe String,
+ db_most_laps_leading :: MostLapsLeading }
+
+
+-- | XML representation of a \<Listing\> contained within a
+-- \<message\>.
+--
+data AutoRacingResultsRaceInformationXml =
+ AutoRacingResultsRaceInformationXml {
+ xml_track_length :: Double,
+ xml_track_length_kph :: Double,
+ xml_laps :: Int,
+ xml_average_speed_mph :: Maybe Double,
+ xml_average_speed_kph :: Maybe Double,
+ xml_average_speed :: Maybe Double,
+ xml_time_of_race :: Maybe String,
+ xml_margin_of_victory :: Maybe String,
+ xml_cautions :: Maybe String,
+ xml_lead_changes :: Maybe String,
+ xml_lap_leaders :: Maybe String,
+ xml_most_laps_leading :: MostLapsLeading }
+ deriving (Eq,Show)
+
+
+instance ToDb AutoRacingResultsRaceInformationXml where
+ -- | The database analogue of an
+ -- 'AutoRacingResultsRaceInformationXml' is an
+ -- 'AutoRacingResultsRaceInformation'.
+ --
+ type Db AutoRacingResultsRaceInformationXml =
+ AutoRacingResultsRaceInformation
+
+instance FromXmlFk AutoRacingResultsRaceInformationXml where
+ -- | Each 'AutoRacingResultsRaceInformationXml' is contained in
+ -- (i.e. has a foreign key to) a 'AutoRacingResults'.
+ --
+ type Parent AutoRacingResultsRaceInformationXml = AutoRacingResults
+
+ -- | To convert an 'AutoRacingResultsRaceInformationXml' to an
+ -- 'AutoRacingResultsRaceInformartion', we add the foreign key and
+ -- copy everything else verbatim.
+ --
+ from_xml_fk fk AutoRacingResultsRaceInformationXml{..} =
+ AutoRacingResultsRaceInformation {
+ db_auto_racing_results_id' = fk,
+ db_track_length = xml_track_length,
+ db_track_length_kph = xml_track_length_kph,
+ db_laps = xml_laps,
+ db_average_speed_mph = xml_average_speed_mph,
+ db_average_speed_kph = xml_average_speed_kph,
+ db_average_speed = xml_average_speed,
+ db_time_of_race = xml_time_of_race,
+ db_margin_of_victory = xml_margin_of_victory,
+ db_cautions = xml_cautions,
+ db_lead_changes = xml_lead_changes,
+ db_lap_leaders = xml_lap_leaders,
+ db_most_laps_leading = xml_most_laps_leading }
+
+
+-- | This allows us to insert the XML representation
+-- 'AutoRacingResultsRaceInformationXml' directly.
+--
+instance XmlImportFk AutoRacingResultsRaceInformationXml
+
+