X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;ds=sidebyside;f=src%2FTSN%2FXML%2FAutoRacingResults.hs;h=503cfff7cd80867282a2d034e371aea7a711737b;hb=75be340947abf838b6325eb450809e242b96df56;hp=bfc07d178b52c233cc691b19c2f3bab94a7aa3c8;hpb=e46c9e59d0594c28dcb2d3c18fb877298bc1b5dd;p=dead%2Fhtsn-import.git
diff --git a/src/TSN/XML/AutoRacingResults.hs b/src/TSN/XML/AutoRacingResults.hs
index bfc07d1..503cfff 100644
--- a/src/TSN/XML/AutoRacingResults.hs
+++ b/src/TSN/XML/AutoRacingResults.hs
@@ -57,12 +57,12 @@ import Text.XML.HXT.Core (
xpWrap )
-- Local imports.
-import TSN.Codegen (
- tsn_codegen_config )
+import TSN.Codegen ( tsn_codegen_config )
import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate )
-import TSN.Picklers ( xp_earnings, xp_racedate, xp_time_stamp )
+import TSN.Picklers ( xp_earnings, xp_datetime, xp_time_stamp )
import TSN.XmlImport ( XmlImport(..), XmlImportFk(..) )
import Xml (
+ Child(..),
FromXml(..),
FromXmlFk(..),
ToDb(..),
@@ -162,7 +162,7 @@ instance XmlImport Message
-- * AutoRacingResultsListing/AutoRacingResultsListingXml
-- | Database representation of a \
contained within a
--- \.
+-- \.
--
data AutoRacingResultsListing =
AutoRacingResultsListing {
@@ -210,12 +210,14 @@ instance ToDb AutoRacingResultsListingXml where
type Db AutoRacingResultsListingXml = AutoRacingResultsListing
-instance FromXmlFk AutoRacingResultsListingXml where
+instance Child AutoRacingResultsListingXml where
-- | Each 'AutoRacingResultsListingXml' is contained in (i.e. has a
-- foreign key to) a 'AutoRacingResults'.
--
type Parent AutoRacingResultsListingXml = AutoRacingResults
+
+instance FromXmlFk AutoRacingResultsListingXml where
-- | To convert an 'AutoRacingResultsListingXml' to an
-- 'AutoRacingResultsListing', we add the foreign key and copy
-- everything else verbatim.
@@ -261,15 +263,16 @@ data MostLapsLeading =
deriving (Data, Eq, Show, Typeable)
--- | Database representation of a \ contained within a
--- \.
+-- | Database representation of a \ contained
+-- within a \.
--
data AutoRacingResultsRaceInformation =
AutoRacingResultsRaceInformation {
-- Note the apostrophe to disambiguate it from the
-- AutoRacingResultsListing field.
db_auto_racing_results_id' :: DefaultKey AutoRacingResults,
- db_track_length :: Double,
+ db_track_length :: String, -- ^ Usually a Double, but sometimes a String,
+ -- like \"1.25 miles\".
db_track_length_kph :: Double,
db_laps :: Int,
db_average_speed_mph :: Maybe Double,
@@ -288,7 +291,7 @@ data AutoRacingResultsRaceInformation =
--
data AutoRacingResultsRaceInformationXml =
AutoRacingResultsRaceInformationXml {
- xml_track_length :: Double,
+ xml_track_length :: String,
xml_track_length_kph :: Double,
xml_laps :: Int,
xml_average_speed_mph :: Maybe Double,
@@ -311,12 +314,15 @@ instance ToDb AutoRacingResultsRaceInformationXml where
type Db AutoRacingResultsRaceInformationXml =
AutoRacingResultsRaceInformation
-instance FromXmlFk AutoRacingResultsRaceInformationXml where
+
+instance Child AutoRacingResultsRaceInformationXml where
-- | Each 'AutoRacingResultsRaceInformationXml' is contained in
-- (i.e. has a foreign key to) a 'AutoRacingResults'.
--
type Parent AutoRacingResultsRaceInformationXml = AutoRacingResults
+
+instance FromXmlFk AutoRacingResultsRaceInformationXml where
-- | To convert an 'AutoRacingResultsRaceInformationXml' to an
-- 'AutoRacingResultsRaceInformartion', we add the foreign key and
-- copy everything else verbatim.
@@ -345,9 +351,9 @@ instance XmlImportFk AutoRacingResultsRaceInformationXml
----
---- Database stuff.
----
+--
+-- * Database stuff.
+--
instance DbImport Message where
dbmigrate _ =
@@ -363,8 +369,7 @@ instance DbImport Message where
insert_xml_fk_ msg_id (xml_race_information m)
- forM_ (xml_listings m) $ \listing -> do
- insert_xml_fk_ msg_id listing
+ forM_ (xml_listings m) $ insert_xml_fk_ msg_id
return ImportSucceeded
@@ -376,7 +381,7 @@ mkPersist tsn_codegen_config [groundhog|
constructors:
- name: AutoRacingResults
uniques:
- - name: unique_auto_racing_schedule
+ - name: unique_auto_racing_results
type: constraint
# Prevent multiple imports of the same message.
fields: [db_xml_file_id]
@@ -391,9 +396,9 @@ mkPersist tsn_codegen_config [groundhog|
reference:
onDelete: cascade
-# Note the apostrophe in the foreign key. This is to disambiguate
-# it from the AutoRacingResultsListing foreign key of the same name.
-# We strip it out of the dbName.
+ # Note the apostrophe in the foreign key. This is to disambiguate
+ # it from the AutoRacingResultsListing foreign key of the same name.
+ # We strip it out of the dbName.
- entity: AutoRacingResultsRaceInformation
dbName: auto_racing_results_race_information
constructors:
@@ -472,7 +477,7 @@ pickle_message =
(xpElem "category" xpText)
(xpElem "sport" xpText)
(xpElem "RaceID" xpInt)
- (xpElem "RaceDate" xp_racedate)
+ (xpElem "RaceDate" xp_datetime)
(xpElem "Title" xpText)
(xpElem "Track_Location" xpText)
(xpElem "Laps_Remaining" xpInt)
@@ -522,8 +527,8 @@ pickle_race_information =
xpWrap (from_tuple, to_tuple) $
xp11Tuple (-- I can't think of another way to get both the
-- TrackLength and its KPH attribute. So we shove them
- -- both in a 2-tuple.
- xpElem "TrackLength" $ xpPair xpPrim (xpAttr "KPH" xpPrim) )
+ -- both in a 2-tuple. This should probably be an embedded type!
+ xpElem "TrackLength" $ xpPair xpText (xpAttr "KPH" xpPrim) )
(xpElem "Laps" xpInt)
(xpOption $ xpElem "AverageSpeedMPH" xpPrim)
(xpOption $ xpElem "AverageSpeedKPH" xpPrim)