package extract import balldontlie._ import game.{Team, PlayerGameStats} import upickle.default._ object Extract { def writeOrReadBack[T: ReadWriter]( localCopy: os.Path, getRemoteData: () => T ): T = { if (!os.exists(localCopy)) { val data = getRemoteData() Utils.writeToFile[T](data, localCopy) data } else { println(s"file $localCopy already exists, reading back from it") Utils.readFromFile[T](localCopy) } } def getTeams(local: os.Path, filterTeams: Team => Boolean) = { def getData() = { EndpointResponse .getTeams() .filter(filterTeams) } writeOrReadBack(local, getData) } def getGames(local: os.Path, season: Int, teamIds: List[Int]) = { def getData() = { EndpointResponse.getGames(2021, teamIds) } writeOrReadBack(local, getData) } def getStats(local: os.Path, gameIds: List[Int]) = { if (!os.exists(local)) { val data = EndpointResponse.getStats(gameIds) Utils.writeToFile(PlayerGameStats.as_json_value(data), local) data } else { println(s"file $local already exists, reading back from it") Utils.readFromFile[List[PlayerGameStats]](local) } } }