X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FTeam.hs;fp=src%2FTSN%2FTeam.hs;h=d02252011a8025e743efc755fdc49ff5b18cdd0c;hb=d1e8d7213d05fcdc259c6abc0bf27f2c57878726;hp=0000000000000000000000000000000000000000;hpb=4e8ac732bb83c50951d0c007f49333392397f277;p=dead%2Fhtsn-import.git diff --git a/src/TSN/Team.hs b/src/TSN/Team.hs new file mode 100644 index 0000000..d022520 --- /dev/null +++ b/src/TSN/Team.hs @@ -0,0 +1,51 @@ +{-# 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] +|]