{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} import Data.Aeson as AE import Data.ByteString.Lazy as BL import Data.ByteString.Lazy.Char8 as BL8 import Data.HashMap.Strict as HM import Prelude as P import Worldcup.Continents import Worldcup.Countries import Worldcup.Events import Worldcup.EventsTeams import Worldcup.Games import Worldcup.Rounds import Worldcup.Teams import Worldcup.Tourneys data WorldcupData = WorldcupData { worldcupTeams :: Teams, worldcupCountries :: Countries, worldcupContinents :: Continents, worldcupTourneys :: Tourneys } deriving (Show) instance ToJSON WorldcupData where toJSON WorldcupData{..} = object [ "teams" .= worldcupTeams, "countries" .= worldcupCountries, "continents" .= worldcupContinents, "tourneys" .= worldcupTourneys ] main :: IO () main = do dataTeams <- BL.readFile "./data/teams.json" dataEventsTeams <- BL.readFile "./data/events_teams.json" dataCountries <- BL.readFile "./data/countries.json" dataContinents <- BL.readFile "./data/continents.json" dataGames <- BL.readFile "./data/games.json" dataEvents <- BL.readFile "./data/events.json" dataRounds <- BL.readFile "./data/rounds.json" let teams = parseTeams (AE.eitherDecode dataTeams) let events = parseEvents (AE.eitherDecode dataEvents) let eventsteams = parseEventsTeams (AE.eitherDecode dataEventsTeams) let games = parseGames (AE.eitherDecode dataGames) let countries = parseCountries (AE.eitherDecode dataCountries) let continents = parseContinents (AE.eitherDecode dataContinents) let rounds = parseRounds (AE.eitherDecode dataRounds) let tourneys = buildTourneys rounds eventsteams games events let worldcup = WorldcupData teams countries continents tourneys let encoded = encode worldcup BL8.putStrLn encoded BL8.putStrLn "Writing worldcup.json" BL8.writeFile "worldcup.json" encoded