--
module TSN.XML.Odds (
odds_tests,
- pickle_message )
+ pickle_message,
+ -- * WARNING: these are private but exported to silence warnings
+ Odds_OddsGameConstructor(..),
+ OddsCasinoConstructor(..),
+ OddsConstructor(..),
+ OddsGame_OddsGameTeamConstructor(..),
+ OddsGameConstructor(..),
+ OddsGameLineConstructor(..),
+ OddsGameTeamConstructor(..) )
where
import Control.Monad ( forM_, join )
xpList,
xpOption,
xpPair,
- xpPrim,
xpText,
xpTriple,
xpWrap )
-- We don't need the key argument (from_xml_fk) since the XML type
-- contains more information in this case.
- from_xml OddsGameCasinoXml{..} = OddsCasino
- xml_casino_client_id
- xml_casino_name
+ from_xml OddsGameCasinoXml{..} =
+ OddsCasino {
+ casino_client_id = xml_casino_client_id,
+ casino_name = xml_casino_name }
+
instance XmlImport OddsGameCasinoXml
instance FromXml OddsGameHomeTeamXml where
type Db OddsGameHomeTeamXml = OddsGameTeam
- from_xml OddsGameHomeTeamXml{..} = OddsGameTeam
- xml_home_team_id
- xml_home_abbr
- xml_home_team_name
+ from_xml OddsGameHomeTeamXml{..} =
+ OddsGameTeam {
+ db_team_id = xml_home_team_id,
+ db_abbr = xml_home_abbr,
+ db_team_name = xml_home_team_name }
instance XmlImport OddsGameHomeTeamXml where
instance FromXml OddsGameXml where
type Db OddsGameXml = OddsGame
- from_xml OddsGameXml{..} = OddsGame
- xml_game_id
- xml_game_date
- xml_game_time
- (xml_away_rotation_number xml_game_away_team)
- (xml_home_rotation_number xml_game_home_team)
+ from_xml OddsGameXml{..} =
+ OddsGame {
+ db_game_id = xml_game_id,
+ db_game_date = xml_game_date,
+ db_game_time = xml_game_time,
+ db_game_away_team_rotation_number =
+ (xml_away_rotation_number xml_game_away_team),
+ db_game_home_team_rotation_number =
+ (xml_home_rotation_number xml_game_home_team) }
instance XmlImport OddsGameXml
-- | Map 'Odds' to their children 'OddsGame's.
-data Odds_OddsGame =
- Odds_OddsGame {
- oog_odds_id :: DefaultKey Odds,
- oog_odds_games_id :: DefaultKey OddsGame }
+--
+data Odds_OddsGame = Odds_OddsGame
+ (DefaultKey Odds)
+ (DefaultKey OddsGame)
+
-- | This is our best guess at what occurs in the Odds_XML
-- documents. It looks like each consecutive set of games can
-- We don't need the key argument (from_xml_fk) since the XML type
-- contains more information in this case.
- from_xml (Message _ _ _ d e f _ _) =
- Odds d e f
+ from_xml Message{..} =
+ Odds {
+ db_sport = xml_sport,
+ db_title = xml_title,
+ db_line_time = xml_line_time }
instance XmlImport Message
- entity: Odds_OddsGame
dbName: odds__odds_games
+ constructors:
+ - name: Odds_OddsGame
+ fields:
+ - name: odds_OddsGame0
+ dbName: odds_id
+ - name: odds_OddsGame1
+ dbName: odds_games_id
- entity: OddsGame_OddsGameTeam
dbName: odds_games__odds_games_teams
away_team_id <- insert_xml_or_select (xml_game_away_team g)
home_team_id <- insert_xml_or_select (xml_game_home_team g)
- -- Insert a record into odds_games__odds_games_teams
- -- mapping the home/away teams to this game.
- insert_ (OddsGame_OddsGameTeam game_id away_team_id home_team_id)
+ -- Insert a record into odds_games__odds_games_teams mapping the
+ -- home/away teams to this game. Use the full record syntax
+ -- because the types would let us mix up the home/away teams.
+ insert_ OddsGame_OddsGameTeam {
+ ogogt_odds_games_id = game_id,
+ ogogt_away_team_id = away_team_id,
+ ogogt_home_team_id = home_team_id }
-- Finaly, we insert the lines. The over/under entries for this
-- game and the lines for the casinos all wind up in the same
ou_casino_id <- insert_xml_or_select c
-- Now add the over/under entry with the casino's id.
- let ogl = OddsGameLine
- game_id
- ou_casino_id
- (xml_casino_line c)
- Nothing
- Nothing
+ let ogl = OddsGameLine {
+ ogl_odds_games_id = game_id,
+ ogl_odds_casinos_id = ou_casino_id,
+ ogl_over_under = (xml_casino_line c),
+ ogl_away_line = Nothing,
+ ogl_home_line = Nothing }
insertByAll ogl
from_tuple = uncurryN OddsGameAwayTeamXml
-- Use record wildcards to avoid unused field warnings.
to_tuple OddsGameAwayTeamXml{..} = (xml_away_team_id,
- xml_away_rotation_number,
- xml_away_abbr,
- xml_away_team_name,
- xml_away_casinos)
+ xml_away_rotation_number,
+ xml_away_abbr,
+ xml_away_team_name,
+ xml_away_casinos)