Games.scala 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package game
  2. import upickle.default._
  3. case class Team(
  4. id: Int,
  5. abbreviation: String,
  6. city: String,
  7. conference: String,
  8. division: String,
  9. full_name: String,
  10. name: String
  11. )
  12. object Team {
  13. implicit val teamRW: ReadWriter[Team] = macroRW[Team]
  14. }
  15. case class GameData(
  16. id: Int,
  17. home_team: Team,
  18. visitor_team: Team,
  19. home_team_score: Int,
  20. visitor_team_score: Int,
  21. period: Int,
  22. postseason: Boolean,
  23. season: Int,
  24. status: String,
  25. date: String
  26. )
  27. object GameData {
  28. implicit val gameDataRW: ReadWriter[GameData] = macroRW[GameData]
  29. }
  30. case class Player(
  31. id: Int,
  32. first_name: String,
  33. last_name: String,
  34. position: String,
  35. team_id: Int
  36. )
  37. object Player {
  38. implicit val playerRW: ReadWriter[Player] = macroRW[Player]
  39. }
  40. case class PlayerGameStats(
  41. id: Int,
  42. ast: Int,
  43. blk: Int,
  44. dreb: Int,
  45. fg3_pct: Float,
  46. fg3a: Int,
  47. fg3m: Int,
  48. fg_pct: Float,
  49. fga: Int,
  50. fgm: Int,
  51. ft_pct: Float,
  52. fta: Int,
  53. ftm: Int,
  54. min: String, // "36:49"
  55. oreb: Int,
  56. pf: Int,
  57. pts: Int,
  58. reb: Int,
  59. stl: Int,
  60. turnover: Int,
  61. player: Player,
  62. team: Map[String, String],
  63. game: Map[String, String]
  64. ) {
  65. val gameId = game("id").toInt
  66. val teamId = team("id").toInt
  67. def as_json_value(): ujson.Value = {
  68. val value = upickle.default.writeJs[PlayerGameStats](this)
  69. value.obj.put("game_id", gameId)
  70. value.obj.put("team_id", teamId)
  71. value.obj.put("player_id", player.id)
  72. value.obj.put("player_first_name", player.first_name)
  73. value.obj.put("player_last_name", player.last_name)
  74. value.obj.put("player_position", player.position)
  75. value.obj.put("player_team_id", player.team_id)
  76. value
  77. }
  78. }
  79. object PlayerGameStats {
  80. implicit val playerGameStatsRW: ReadWriter[PlayerGameStats] =
  81. macroRW[PlayerGameStats]
  82. def as_json_value(stats_list: List[PlayerGameStats]): ujson.Value = {
  83. upickle.default.writeJs(stats_list.map(_.as_json_value()))
  84. }
  85. }