X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FXML%2FAutoRacingDriverList.hs;h=453986ea9fc21d26467bc1c75e7a54965521f4ec;hb=99cb78224987bd773f5c008df81302e07ff31e25;hp=b1a611e77133087271c2a380160d546071c6c881;hpb=bd8a41c76ed405f06c09e2594bcec37e85d51e22;p=dead%2Fhtsn-import.git diff --git a/src/TSN/XML/AutoRacingDriverList.hs b/src/TSN/XML/AutoRacingDriverList.hs index b1a611e..453986e 100644 --- a/src/TSN/XML/AutoRacingDriverList.hs +++ b/src/TSN/XML/AutoRacingDriverList.hs @@ -25,6 +25,7 @@ where import Control.Monad ( forM_ ) import Data.Time ( UTCTime(..) ) import Data.Tuple.Curry ( uncurryN ) +import qualified Data.Vector.HFixed as H ( HVector, cons, convert ) import Database.Groundhog ( countAll, deleteAll, @@ -52,7 +53,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 ( xp_date, xp_time_stamp ) @@ -106,9 +106,9 @@ data Message = xml_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 @@ -143,40 +143,47 @@ instance XmlImport Message -- AutoRacingDriverListListing / AutoRacingDriverListListingXml -- | Database representation of a \ contained within a --- \. +-- \. The leading underscores prevent unused field +-- warnings. -- data AutoRacingDriverListListing = AutoRacingDriverListListing { - db_auto_racing_driver_lists_id :: DefaultKey AutoRacingDriverList, - db_driver_id :: Int, - db_driver :: String, - db_height :: Maybe String, - db_weight :: Int, - db_date_of_birth :: UTCTime, - db_hometown :: String, - db_nationality :: Maybe String, - db_car_number :: Int, - db_car :: String } + _db_auto_racing_driver_lists_id :: DefaultKey AutoRacingDriverList, + _db_driver_id :: Int, + _db_driver :: String, + _db_height :: Maybe String, + _db_weight :: Int, + _db_date_of_birth :: UTCTime, + _db_hometown :: String, + _db_nationality :: Maybe String, + _db_car_number :: Int, + _db_car :: String } + deriving ( GHC.Generic ) + +-- | For 'H.convert'. +-- +instance H.HVector AutoRacingDriverListListing + -- | XML representation of a \ contained within a --- \. +-- \. The underscores prevent unused field warnings. -- data AutoRacingDriverListListingXml = AutoRacingDriverListListingXml { - xml_driver_id :: Int, - xml_driver :: String, - xml_height :: Maybe String, - xml_weight :: Int, - xml_date_of_birth :: UTCTime, - xml_hometown :: String, - xml_nationality :: Maybe String, - xml_car_number :: Int, - xml_car :: String } + _xml_driver_id :: Int, + _xml_driver :: String, + _xml_height :: Maybe String, + _xml_weight :: Int, + _xml_date_of_birth :: UTCTime, + _xml_hometown :: String, + _xml_nationality :: Maybe String, + _xml_car_number :: Int, + _xml_car :: String } deriving (Eq, GHC.Generic, Show) --- | For 'Generics.to_tuple'. +-- | For 'H.convert' and 'H.cons'. -- -instance Generic AutoRacingDriverListListingXml +instance H.HVector AutoRacingDriverListListingXml instance ToDb AutoRacingDriverListListingXml where -- | The database analogue of an 'AutoRacingDriverListListingXml' is @@ -197,18 +204,8 @@ instance FromXmlFk AutoRacingDriverListListingXml where -- 'AutoRacingDriverListListing', we add the foreign key and copy -- everything else verbatim. -- - from_xml_fk fk AutoRacingDriverListListingXml{..} = - AutoRacingDriverListListing { - db_auto_racing_driver_lists_id = fk, - db_driver_id = xml_driver_id, - db_driver = xml_driver, - db_height = xml_height, - db_weight = xml_weight, - db_date_of_birth = xml_date_of_birth, - db_hometown = xml_hometown, - db_nationality = xml_nationality, - db_car_number = xml_car_number, - db_car = xml_car } + from_xml_fk = H.cons + -- | This allows us to insert the XML representation @@ -254,7 +251,7 @@ mkPersist tsn_codegen_config [groundhog| constructors: - name: AutoRacingDriverListListing fields: - - name: db_auto_racing_driver_lists_id + - name: _db_auto_racing_driver_lists_id reference: onDelete: cascade @@ -270,7 +267,7 @@ mkPersist tsn_codegen_config [groundhog| pickle_listing :: PU AutoRacingDriverListListingXml pickle_listing = xpElem "Listing" $ - xpWrap (from_tuple, to_tuple) $ + xpWrap (from_tuple, H.convert) $ xp9Tuple (xpElem "DriverID" xpInt) (xpElem "Driver" xpText) (xpElem "Height" $ xpOption xpText) @@ -288,7 +285,7 @@ pickle_listing = pickle_message :: PU Message pickle_message = xpElem "message" $ - xpWrap (from_tuple, to_tuple) $ + xpWrap (from_tuple, H.convert) $ xp7Tuple (xpElem "XML_File_ID" xpInt) (xpElem "heading" xpText) (xpElem "category" xpText)