{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} import Data.Aeson as AE import Data.ByteString.Lazy as BL import Data.ByteString.Lazy.Char8 as BL8 import Prelude as P import Worldcup.Countries import Worldcup.Events import Worldcup.EventsTeams import Worldcup.Games import Worldcup.Rounds import Worldcup.Teams import Worldcup.Tourneys data WorldcupData = WorldcupData { worldcupCountries :: Countries, worldcupRounds :: Rounds, worldcupTourneys :: Tourneys } deriving (Show) instance ToJSON WorldcupData where toJSON WorldcupData{..} = object [ "countries" .= worldcupCountries, "rounds" .= worldcupRounds, "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" 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 rounds = parseRounds (AE.eitherDecode dataRounds) let tourneys = buildTourneys countries rounds eventsteams teams games events let worldcup = WorldcupData countries rounds tourneys let encoded = encode worldcup BL8.putStrLn encoded BL8.putStrLn "Writing worldcup.json" BL8.writeFile "worldcup.json" encoded