package game import upickle.default._ case class Team( id: Int, abbreviation: String, city: String, conference: String, division: String, full_name: String, name: String ) object Team { implicit val teamRW: ReadWriter[Team] = macroRW[Team] } case class GameData( id: Int, home_team: Team, visitor_team: Team, home_team_score: Int, visitor_team_score: Int, period: Int, postseason: Boolean, season: Int, status: String, date: String ) object GameData { implicit val gameDataRW: ReadWriter[GameData] = macroRW[GameData] } case class Player( id: Int, first_name: String, last_name: String, position: String, team_id: Int ) object Player { implicit val playerRW: ReadWriter[Player] = macroRW[Player] } case class PlayerGameStats( id: Int, ast: Int, blk: Int, dreb: Int, fg3_pct: Float, fg3a: Int, fg3m: Int, fg_pct: Float, fga: Int, fgm: Int, ft_pct: Float, fta: Int, ftm: Int, min: String, // "36:49" oreb: Int, pf: Int, pts: Int, reb: Int, stl: Int, turnover: Int, player: Player, team: Map[String, String], game: Map[String, String] ) { val gameId = game("id").toInt val teamId = team("id").toInt def as_json_value(): ujson.Value = { val value = upickle.default.writeJs[PlayerGameStats](this) value.obj.put("game_id", gameId) value.obj.put("team_id", teamId) value.obj.put("player_id", player.id) value.obj.put("player_first_name", player.first_name) value.obj.put("player_last_name", player.last_name) value.obj.put("player_position", player.position) value.obj.put("player_team_id", player.team_id) value } } object PlayerGameStats { implicit val playerGameStatsRW: ReadWriter[PlayerGameStats] = macroRW[PlayerGameStats] def as_json_value(stats_list: List[PlayerGameStats]): ujson.Value = { upickle.default.writeJs(stats_list.map(_.as_json_value())) } }