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