You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

50 lines
1.8 KiB

{-# 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