src/TSN/DbImport.hs
src/TSN/Parse.hs
src/TSN/Picklers.hs
+ src/TSN/Team.hs
src/TSN/XmlImport.hs
src/TSN/XML/AutoRacingResults.hs
src/TSN/XML/AutoRacingSchedule.hs
import TSN.DbImport
import TSN.Parse
import TSN.Picklers
+import TSN.Team
import TSN.XmlImport
import TSN.XML.AutoRacingResults
import TSN.XML.AutoRacingSchedule
--- /dev/null
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+
+-- | Two different XML types have a notion of teams: "TSN.XML.Odds"
+-- and "TSN.XML.JFile". And in fact those two types agree on the
+-- team id, abbreviation, and name -- at least for the database
+-- representation.
+--
+-- This module contains a data type for the common database
+-- representation.
+--
+module TSN.Team (
+ Team(..),
+ -- * WARNING: these are private but exported to silence warnings
+ TeamConstructor(..) )
+where
+
+-- System imports
+import Database.Groundhog () -- Required for some String instance
+import Database.Groundhog.TH (
+ defaultCodegenConfig,
+ groundhog,
+ mkPersist )
+
+
+-- | The database representation of a team. The 'team_id' is a
+-- 'String' field because some teams do in fact have ids like
+-- \"B52\".
+--
+data Team =
+ Team {
+ team_id :: String, -- ^ Some of them contain characters
+ team_abbreviation :: String,
+ team_name :: String }
+ deriving (Eq, Show)
+
+
+-- Generate the Groundhog code for 'Team'.
+mkPersist defaultCodegenConfig [groundhog|
+- entity: Team
+ dbName: teams
+ constructors:
+ - name: Team
+ uniques:
+ - name: unique_odds_games_team
+ type: constraint
+ fields: [team_id]
+|]