stattleship-ruby 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +263 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +8 -0
  7. data/CODE_OF_CONDUCT.md +13 -0
  8. data/Gemfile +15 -0
  9. data/LICENSE +1 -0
  10. data/README.md +75 -0
  11. data/Rakefile +1 -0
  12. data/bin/console +7 -0
  13. data/bin/game_log_officials +32 -0
  14. data/bin/game_logs +69 -0
  15. data/bin/games +42 -0
  16. data/bin/in_progress +19 -0
  17. data/bin/injuries +18 -0
  18. data/bin/officials +42 -0
  19. data/bin/players +45 -0
  20. data/bin/scoreboard +43 -0
  21. data/bin/setup +7 -0
  22. data/bin/stat_leaders +25 -0
  23. data/bin/team_game_logs +35 -0
  24. data/bin/teams +29 -0
  25. data/bin/top_stats +25 -0
  26. data/bin/total_player_stat +33 -0
  27. data/bin/total_team_stat +22 -0
  28. data/examples/README.md +118 -0
  29. data/examples/baseball_feats.rb +35 -0
  30. data/examples/baseball_games.rb +32 -0
  31. data/examples/baseball_player_game_logs.rb +33 -0
  32. data/examples/baseball_stat_leaders.rb +30 -0
  33. data/examples/basketball_game_logs.rb +33 -0
  34. data/examples/basketball_injuries.rb +36 -0
  35. data/examples/basketball_season_player_performance_rankings.rb +31 -0
  36. data/examples/basketball_stat_leaders.rb +40 -0
  37. data/examples/basketball_team_game_logs.rb +38 -0
  38. data/examples/basketball_top_stats.rb +43 -0
  39. data/examples/basketball_winning_streaks.rb +27 -0
  40. data/examples/bears_team_game_logs.rb +46 -0
  41. data/examples/football_feats.rb +49 -0
  42. data/examples/football_game_logs.rb +40 -0
  43. data/examples/football_players.rb +43 -0
  44. data/examples/football_stats.rb +50 -0
  45. data/examples/football_total_player_stat.rb +32 -0
  46. data/examples/hockey_games.rb +56 -0
  47. data/examples/hockey_penalties.rb +47 -0
  48. data/examples/hockey_scoring_plays.rb +55 -0
  49. data/examples/hockey_team_ranked_streaks.rb +27 -0
  50. data/examples/hockey_teams.rb +54 -0
  51. data/examples/hockey_total_team_stat.rb +32 -0
  52. data/examples/sample.env +2 -0
  53. data/lib/stattleship.rb +117 -0
  54. data/lib/stattleship/baseball_feats.rb +15 -0
  55. data/lib/stattleship/baseball_game_logs.rb +159 -0
  56. data/lib/stattleship/baseball_games.rb +15 -0
  57. data/lib/stattleship/baseball_injuries.rb +15 -0
  58. data/lib/stattleship/baseball_penalties.rb +15 -0
  59. data/lib/stattleship/baseball_players.rb +15 -0
  60. data/lib/stattleship/baseball_scoring_plays.rb +15 -0
  61. data/lib/stattleship/baseball_stat_leaders.rb +15 -0
  62. data/lib/stattleship/baseball_stats.rb +15 -0
  63. data/lib/stattleship/baseball_team_game_logs.rb +142 -0
  64. data/lib/stattleship/baseball_team_outcome_streaks.rb +15 -0
  65. data/lib/stattleship/baseball_teams.rb +15 -0
  66. data/lib/stattleship/baseball_top_stats.rb +15 -0
  67. data/lib/stattleship/baseball_total_player_stat.rb +15 -0
  68. data/lib/stattleship/baseball_total_team_stat.rb +15 -0
  69. data/lib/stattleship/basketball_feats.rb +15 -0
  70. data/lib/stattleship/basketball_game_logs.rb +111 -0
  71. data/lib/stattleship/basketball_games.rb +15 -0
  72. data/lib/stattleship/basketball_injuries.rb +15 -0
  73. data/lib/stattleship/basketball_penalties.rb +15 -0
  74. data/lib/stattleship/basketball_players.rb +15 -0
  75. data/lib/stattleship/basketball_scoring_plays.rb +15 -0
  76. data/lib/stattleship/basketball_stat_leaders.rb +15 -0
  77. data/lib/stattleship/basketball_stats.rb +15 -0
  78. data/lib/stattleship/basketball_team_game_logs.rb +113 -0
  79. data/lib/stattleship/basketball_team_outcome_streaks.rb +15 -0
  80. data/lib/stattleship/basketball_teams.rb +15 -0
  81. data/lib/stattleship/basketball_top_stats.rb +15 -0
  82. data/lib/stattleship/basketball_total_player_stat.rb +15 -0
  83. data/lib/stattleship/basketball_total_team_stat.rb +15 -0
  84. data/lib/stattleship/client/client.rb +101 -0
  85. data/lib/stattleship/client/configuration.rb +42 -0
  86. data/lib/stattleship/endpoint.rb +208 -0
  87. data/lib/stattleship/feats.rb +150 -0
  88. data/lib/stattleship/football_feats.rb +15 -0
  89. data/lib/stattleship/football_game_logs.rb +255 -0
  90. data/lib/stattleship/football_games.rb +15 -0
  91. data/lib/stattleship/football_injuries.rb +15 -0
  92. data/lib/stattleship/football_penalties.rb +15 -0
  93. data/lib/stattleship/football_players.rb +15 -0
  94. data/lib/stattleship/football_scoring_plays.rb +15 -0
  95. data/lib/stattleship/football_stat_leaders.rb +15 -0
  96. data/lib/stattleship/football_stats.rb +15 -0
  97. data/lib/stattleship/football_team_game_logs.rb +176 -0
  98. data/lib/stattleship/football_team_outcome_streaks.rb +15 -0
  99. data/lib/stattleship/football_teams.rb +15 -0
  100. data/lib/stattleship/football_top_stats.rb +15 -0
  101. data/lib/stattleship/football_total_player_stat.rb +15 -0
  102. data/lib/stattleship/football_total_team_stat.rb +15 -0
  103. data/lib/stattleship/formatters/stat_formatter.rb +28 -0
  104. data/lib/stattleship/game_logs.rb +97 -0
  105. data/lib/stattleship/games.rb +38 -0
  106. data/lib/stattleship/hockey_feats.rb +15 -0
  107. data/lib/stattleship/hockey_game_logs.rb +107 -0
  108. data/lib/stattleship/hockey_games.rb +15 -0
  109. data/lib/stattleship/hockey_injuries.rb +15 -0
  110. data/lib/stattleship/hockey_penalties.rb +32 -0
  111. data/lib/stattleship/hockey_players.rb +15 -0
  112. data/lib/stattleship/hockey_scoring_plays.rb +15 -0
  113. data/lib/stattleship/hockey_stat_leaders.rb +15 -0
  114. data/lib/stattleship/hockey_stats.rb +15 -0
  115. data/lib/stattleship/hockey_team_game_logs.rb +128 -0
  116. data/lib/stattleship/hockey_team_outcome_streaks.rb +15 -0
  117. data/lib/stattleship/hockey_teams.rb +15 -0
  118. data/lib/stattleship/hockey_top_stats.rb +15 -0
  119. data/lib/stattleship/hockey_total_player_stat.rb +15 -0
  120. data/lib/stattleship/hockey_total_team_stat.rb +15 -0
  121. data/lib/stattleship/injuries.rb +32 -0
  122. data/lib/stattleship/models.rb +19 -0
  123. data/lib/stattleship/models/game.rb +360 -0
  124. data/lib/stattleship/models/injury.rb +22 -0
  125. data/lib/stattleship/models/league.rb +35 -0
  126. data/lib/stattleship/models/official.rb +20 -0
  127. data/lib/stattleship/models/penalty.rb +133 -0
  128. data/lib/stattleship/models/player.rb +124 -0
  129. data/lib/stattleship/models/playing_position.rb +17 -0
  130. data/lib/stattleship/models/ranking.rb +96 -0
  131. data/lib/stattleship/models/scoring_play.rb +201 -0
  132. data/lib/stattleship/models/scoring_player.rb +22 -0
  133. data/lib/stattleship/models/season.rb +18 -0
  134. data/lib/stattleship/models/team.rb +78 -0
  135. data/lib/stattleship/models/team_outcome_streak.rb +88 -0
  136. data/lib/stattleship/models/venue.rb +32 -0
  137. data/lib/stattleship/params.rb +102 -0
  138. data/lib/stattleship/params/baseball_feats_params.rb +6 -0
  139. data/lib/stattleship/params/baseball_game_logs_params.rb +6 -0
  140. data/lib/stattleship/params/baseball_games_params.rb +6 -0
  141. data/lib/stattleship/params/baseball_injuries_params.rb +6 -0
  142. data/lib/stattleship/params/baseball_penalties_params.rb +6 -0
  143. data/lib/stattleship/params/baseball_players_params.rb +6 -0
  144. data/lib/stattleship/params/baseball_scoring_plays_params.rb +6 -0
  145. data/lib/stattleship/params/baseball_stat_leaders_params.rb +6 -0
  146. data/lib/stattleship/params/baseball_stats_params.rb +6 -0
  147. data/lib/stattleship/params/baseball_team_game_logs_params.rb +6 -0
  148. data/lib/stattleship/params/baseball_team_outcome_streaks_params.rb +9 -0
  149. data/lib/stattleship/params/baseball_team_stats_params.rb +10 -0
  150. data/lib/stattleship/params/baseball_teams_params.rb +6 -0
  151. data/lib/stattleship/params/baseball_top_stats_params.rb +6 -0
  152. data/lib/stattleship/params/baseball_total_player_stat_params.rb +6 -0
  153. data/lib/stattleship/params/baseball_total_team_stat_params.rb +11 -0
  154. data/lib/stattleship/params/basketball_feats_params.rb +6 -0
  155. data/lib/stattleship/params/basketball_game_logs_params.rb +6 -0
  156. data/lib/stattleship/params/basketball_games_params.rb +6 -0
  157. data/lib/stattleship/params/basketball_injuries_params.rb +6 -0
  158. data/lib/stattleship/params/basketball_penalties_params.rb +6 -0
  159. data/lib/stattleship/params/basketball_players_params.rb +6 -0
  160. data/lib/stattleship/params/basketball_scoring_plays_params.rb +6 -0
  161. data/lib/stattleship/params/basketball_stat_leaders_params.rb +6 -0
  162. data/lib/stattleship/params/basketball_stats_params.rb +6 -0
  163. data/lib/stattleship/params/basketball_team_game_logs_params.rb +6 -0
  164. data/lib/stattleship/params/basketball_team_outcome_streaks_params.rb +9 -0
  165. data/lib/stattleship/params/basketball_team_stats_params.rb +10 -0
  166. data/lib/stattleship/params/basketball_teams_params.rb +6 -0
  167. data/lib/stattleship/params/basketball_top_stats_params.rb +6 -0
  168. data/lib/stattleship/params/basketball_total_player_stat_params.rb +6 -0
  169. data/lib/stattleship/params/basketball_total_team_stat_params.rb +11 -0
  170. data/lib/stattleship/params/feats_params.rb +23 -0
  171. data/lib/stattleship/params/football_feats_params.rb +6 -0
  172. data/lib/stattleship/params/football_game_logs_params.rb +11 -0
  173. data/lib/stattleship/params/football_games_params.rb +6 -0
  174. data/lib/stattleship/params/football_injuries_params.rb +6 -0
  175. data/lib/stattleship/params/football_penalties_params.rb +6 -0
  176. data/lib/stattleship/params/football_players_params.rb +6 -0
  177. data/lib/stattleship/params/football_scoring_plays_params.rb +6 -0
  178. data/lib/stattleship/params/football_stat_leaders_params.rb +6 -0
  179. data/lib/stattleship/params/football_stats_params.rb +6 -0
  180. data/lib/stattleship/params/football_team_game_logs_params.rb +6 -0
  181. data/lib/stattleship/params/football_team_outcome_streaks_params.rb +9 -0
  182. data/lib/stattleship/params/football_team_stats_params.rb +10 -0
  183. data/lib/stattleship/params/football_teams_params.rb +6 -0
  184. data/lib/stattleship/params/football_top_stats_params.rb +6 -0
  185. data/lib/stattleship/params/football_total_player_stat_params.rb +6 -0
  186. data/lib/stattleship/params/football_total_team_stat_params.rb +11 -0
  187. data/lib/stattleship/params/game_logs_params.rb +13 -0
  188. data/lib/stattleship/params/game_time_params.rb +17 -0
  189. data/lib/stattleship/params/games_params.rb +13 -0
  190. data/lib/stattleship/params/hockey_feats_params.rb +6 -0
  191. data/lib/stattleship/params/hockey_game_logs_params.rb +6 -0
  192. data/lib/stattleship/params/hockey_games_params.rb +6 -0
  193. data/lib/stattleship/params/hockey_injuries_params.rb +6 -0
  194. data/lib/stattleship/params/hockey_penalties_params.rb +6 -0
  195. data/lib/stattleship/params/hockey_players_params.rb +6 -0
  196. data/lib/stattleship/params/hockey_scoring_plays_params.rb +6 -0
  197. data/lib/stattleship/params/hockey_stat_leaders_params.rb +6 -0
  198. data/lib/stattleship/params/hockey_stats_params.rb +6 -0
  199. data/lib/stattleship/params/hockey_team_game_logs_params.rb +6 -0
  200. data/lib/stattleship/params/hockey_team_outcome_streaks_params.rb +9 -0
  201. data/lib/stattleship/params/hockey_team_stats_params.rb +10 -0
  202. data/lib/stattleship/params/hockey_teams_params.rb +6 -0
  203. data/lib/stattleship/params/hockey_top_stats_params.rb +6 -0
  204. data/lib/stattleship/params/hockey_total_player_stat_params.rb +6 -0
  205. data/lib/stattleship/params/hockey_total_team_stat_params.rb +11 -0
  206. data/lib/stattleship/params/injuries_params.rb +11 -0
  207. data/lib/stattleship/params/penalties_params.rb +11 -0
  208. data/lib/stattleship/params/players_params.rb +12 -0
  209. data/lib/stattleship/params/query_params.rb +50 -0
  210. data/lib/stattleship/params/rankings_params.rb +15 -0
  211. data/lib/stattleship/params/scoring_plays_params.rb +12 -0
  212. data/lib/stattleship/params/stat_leaders_params.rb +17 -0
  213. data/lib/stattleship/params/stats_params.rb +17 -0
  214. data/lib/stattleship/params/team_game_logs_params.rb +12 -0
  215. data/lib/stattleship/params/team_outcome_streaks_params.rb +24 -0
  216. data/lib/stattleship/params/teams_params.rb +9 -0
  217. data/lib/stattleship/params/top_stats_params.rb +17 -0
  218. data/lib/stattleship/params/total_player_stat_params.rb +17 -0
  219. data/lib/stattleship/params/total_team_stat_params.rb +18 -0
  220. data/lib/stattleship/penalties.rb +26 -0
  221. data/lib/stattleship/players.rb +26 -0
  222. data/lib/stattleship/rankings.rb +51 -0
  223. data/lib/stattleship/scoring_plays.rb +30 -0
  224. data/lib/stattleship/stat_leaders.rb +43 -0
  225. data/lib/stattleship/stats.rb +76 -0
  226. data/lib/stattleship/team_game_logs.rb +90 -0
  227. data/lib/stattleship/team_outcome_streaks.rb +28 -0
  228. data/lib/stattleship/teams.rb +20 -0
  229. data/lib/stattleship/top_stats.rb +58 -0
  230. data/lib/stattleship/total_player_stat.rb +37 -0
  231. data/lib/stattleship/total_team_stat.rb +30 -0
  232. data/lib/stattleship/validators.rb +33 -0
  233. data/lib/stattleship/validators/base_validator.rb +117 -0
  234. data/lib/stattleship/validators/birth_date_validator.rb +9 -0
  235. data/lib/stattleship/validators/current_validator.rb +9 -0
  236. data/lib/stattleship/validators/feat_validator.rb +9 -0
  237. data/lib/stattleship/validators/game_id_validator.rb +9 -0
  238. data/lib/stattleship/validators/interval_type_validator.rb +9 -0
  239. data/lib/stattleship/validators/level_up_validator.rb +9 -0
  240. data/lib/stattleship/validators/level_validator.rb +16 -0
  241. data/lib/stattleship/validators/on_validator.rb +9 -0
  242. data/lib/stattleship/validators/outcome_validator.rb +9 -0
  243. data/lib/stattleship/validators/page_validator.rb +9 -0
  244. data/lib/stattleship/validators/penalty_validator.rb +9 -0
  245. data/lib/stattleship/validators/per_page_validator.rb +9 -0
  246. data/lib/stattleship/validators/place_validator.rb +9 -0
  247. data/lib/stattleship/validators/player_id_validator.rb +9 -0
  248. data/lib/stattleship/validators/rank_validator.rb +9 -0
  249. data/lib/stattleship/validators/ranked_validator.rb +9 -0
  250. data/lib/stattleship/validators/ranking_validator.rb +9 -0
  251. data/lib/stattleship/validators/scoring_method_validator.rb +9 -0
  252. data/lib/stattleship/validators/scoring_type_validator.rb +9 -0
  253. data/lib/stattleship/validators/season_id_validator.rb +9 -0
  254. data/lib/stattleship/validators/since_validator.rb +9 -0
  255. data/lib/stattleship/validators/stat_validator.rb +23 -0
  256. data/lib/stattleship/validators/status_validator.rb +16 -0
  257. data/lib/stattleship/validators/streak_length_validator.rb +9 -0
  258. data/lib/stattleship/validators/team_id_validator.rb +9 -0
  259. data/lib/stattleship/validators/type_validator.rb +9 -0
  260. data/lib/stattleship/validators/week_validator.rb +9 -0
  261. data/lib/stattleship/version.rb +5 -0
  262. data/sample.env +1 -0
  263. data/stattleship-ruby.gemspec +33 -0
  264. metadata +503 -0
@@ -0,0 +1,26 @@
1
+ module Stattleship
2
+ class Players < Stattleship::Endpoint
3
+ def populate
4
+ players.each do |player|
5
+ populate_player(player)
6
+ end
7
+ end
8
+ end
9
+
10
+ module PlayersRepresenter
11
+ include Roar::JSON
12
+ include Stattleship::Models
13
+
14
+ collection :players, extend: PlayerRepresenter,
15
+ class: Player
16
+
17
+ collection :playing_positions, extend: PlayingPositionRepresenter,
18
+ class: PlayingPosition
19
+
20
+ collection :leagues, extend: LeagueRepresenter,
21
+ class: League
22
+
23
+ collection :teams, extend: TeamRepresenter,
24
+ class: Team
25
+ end
26
+ end
@@ -0,0 +1,51 @@
1
+ module Stattleship
2
+ class Rankings < Stattleship::Endpoint
3
+
4
+ RANKINGS_PATH = 'rankings'.freeze
5
+
6
+ def self.fetch(params:)
7
+ super(path: RANKINGS_PATH,
8
+ params: params)
9
+ end
10
+
11
+ def populate
12
+ rankings.each do |ranking|
13
+ populate_games(ranking)
14
+
15
+ games.each do |game|
16
+ populate_game(game)
17
+ end
18
+
19
+ populate_players(ranking)
20
+ populate_player_teams(ranking)
21
+ populate_teams(ranking)
22
+ end
23
+ end
24
+ end
25
+
26
+ module RankingsRepresenter
27
+ include Roar::JSON
28
+ include Stattleship::Models
29
+
30
+ collection :rankings, extend: RankingRepresenter,
31
+ class: Ranking
32
+
33
+ collection :games, extend: GameRepresenter,
34
+ class: Game
35
+
36
+ collection :leagues, extend: LeagueRepresenter,
37
+ class: League
38
+
39
+ collection :players, extend: PlayerRepresenter,
40
+ class: Player
41
+
42
+ collection :teams, extend: TeamRepresenter,
43
+ class: Team
44
+
45
+ collection :seasons, extend: SeasonRepresenter,
46
+ class: Season
47
+
48
+ collection :venues, extend: VenueRepresenter,
49
+ class: Venue
50
+ end
51
+ end
@@ -0,0 +1,30 @@
1
+ module Stattleship
2
+ class ScoringPlays < Stattleship::Endpoint
3
+ def populate
4
+ scoring_plays.each do |scoring_play|
5
+ populate_games(scoring_play)
6
+
7
+ games.each do |game|
8
+ populate_game(game)
9
+ end
10
+
11
+ populate_teams(scoring_play)
12
+ populate_opponents(scoring_play)
13
+
14
+ populate_scoring_players(scoring_play)
15
+ end
16
+ end
17
+ end
18
+
19
+ module ScoringPlaysRepresenter
20
+ include Roar::JSON
21
+ include Stattleship::Models
22
+ include Stattleship::GameLogsRepresenter
23
+
24
+ collection :scoring_plays, extend: ScoringPlayRepresenter,
25
+ class: Stattleship::Models::ScoringPlay
26
+
27
+ collection :scoring_players, extend: ScoringPlayerRepresenter,
28
+ class: ScoringPlayer
29
+ end
30
+ end
@@ -0,0 +1,43 @@
1
+ module Stattleship
2
+ class Leader < OpenStruct
3
+ def player_name
4
+ if player
5
+ player.name
6
+ end
7
+ end
8
+
9
+ def to_sentence
10
+ "#{player.name} is in #{place.ordinalize} place with #{format_stat(stat)} #{stat_name}"
11
+ end
12
+
13
+ def format_stat(value)
14
+ StatFormatter.stat(stat_name: stat_name, value: stat)
15
+ end
16
+ end
17
+
18
+ class StatLeaders < Stattleship::Endpoint
19
+ def populate
20
+ stat_leaders.each do |leader|
21
+ populate_players(leader)
22
+ populate_player_teams(leader)
23
+ end
24
+ end
25
+ end
26
+
27
+ module StatLeadersRepresenter
28
+ include Roar::JSON
29
+ include Roar::Coercion
30
+
31
+ collection :stat_leaders, class: Stattleship::Leader do
32
+ property :place
33
+ property :player_id
34
+ property :stat, type: BigDecimal
35
+ property :stat_name
36
+ end
37
+
38
+ collection :players, extend: Stattleship::Models::PlayerRepresenter,
39
+ class: Stattleship::Models::Player
40
+ collection :teams, extend: Stattleship::Models::TeamRepresenter,
41
+ class: Stattleship::Models::Team
42
+ end
43
+ end
@@ -0,0 +1,76 @@
1
+ module Stattleship
2
+ class Stat < OpenStruct
3
+ def name
4
+ subject.name
5
+ end
6
+
7
+ def subject
8
+ player || team
9
+ end
10
+
11
+ def to_sentence
12
+ "#{name} had #{StatFormatter.stat(stat_name: stat_name, value: stat) || 'no'} #{stat_name} on #{game.name}"
13
+ end
14
+ end
15
+
16
+ class Stats < Stattleship::Endpoint
17
+ def populate
18
+ stats.each do |stat|
19
+ populate_games(stat)
20
+
21
+ games.each do |game|
22
+ populate_game(game)
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ module StatsRepresenter
29
+ include Roar::JSON
30
+ include Stattleship::Models
31
+
32
+ collection :stats, class: Stattleship::Stat do
33
+ property :game_id
34
+ property :stat
35
+ property :stat_name
36
+
37
+ property :player,
38
+ extend: PlayerRepresenter,
39
+ class: Player
40
+
41
+ property :team,
42
+ extend: TeamRepresenter,
43
+ class: Team
44
+ end
45
+
46
+ collection :away_teams, extend: TeamRepresenter,
47
+ class: Team
48
+
49
+ collection :home_teams, extend: TeamRepresenter,
50
+ class: Team
51
+
52
+ collection :winning_teams, extend: TeamRepresenter,
53
+ class: Team
54
+
55
+ collection :games, extend: GameRepresenter,
56
+ class: Game
57
+
58
+ collection :leagues, extend: LeagueRepresenter,
59
+ class: League
60
+
61
+ collection :seasons, extend: SeasonRepresenter,
62
+ class: Season
63
+
64
+ collection :venues, extend: VenueRepresenter,
65
+ class: Venue
66
+
67
+ collection :players, extend: PlayerRepresenter,
68
+ class: Player
69
+
70
+ collection :playing_positions, extend: PlayingPositionRepresenter,
71
+ class: PlayingPosition
72
+
73
+ collection :teams, extend: TeamRepresenter,
74
+ class: Team
75
+ end
76
+ end
@@ -0,0 +1,90 @@
1
+ module Stattleship
2
+ class TeamGameLog < OpenStruct
3
+ def city
4
+ venue.city
5
+ end
6
+
7
+ def league_name
8
+ league.name
9
+ end
10
+
11
+ def league_abbreviation
12
+ league.abbreviation
13
+ end
14
+
15
+ def opponent_name
16
+ opponent.name
17
+ end
18
+
19
+ def opponent_full_name
20
+ opponent.full_name
21
+ end
22
+
23
+ def scoreline
24
+ game.scoreline
25
+ end
26
+
27
+ def team_name
28
+ team.name
29
+ end
30
+
31
+ def team_full_name
32
+ team.full_name
33
+ end
34
+
35
+ def venue
36
+ game.venue
37
+ end
38
+ end
39
+
40
+ class TeamGameLogs < Stattleship::Endpoint
41
+ def populate
42
+ team_game_logs.each do |team_game_log|
43
+ populate_games(team_game_log)
44
+
45
+ games.each do |game|
46
+ populate_game(game)
47
+ end
48
+
49
+ populate_opponents(team_game_log)
50
+ populate_officials(team_game_log)
51
+ populate_teams(team_game_log)
52
+ end
53
+ end
54
+ end
55
+
56
+ module TeamGameLogsRepresenter
57
+ include Roar::JSON
58
+ include Stattleship::Models
59
+
60
+ collection :away_teams, extend: TeamRepresenter,
61
+ class: Team
62
+
63
+ collection :home_teams, extend: TeamRepresenter,
64
+ class: Team
65
+
66
+ collection :winning_teams, extend: TeamRepresenter,
67
+ class: Team
68
+
69
+ collection :games, extend: GameRepresenter,
70
+ class: Game
71
+
72
+ collection :leagues, extend: LeagueRepresenter,
73
+ class: League
74
+
75
+ collection :seasons, extend: SeasonRepresenter,
76
+ class: Season
77
+
78
+ collection :officials, extend: OfficialRepresenter,
79
+ class: Official
80
+
81
+ collection :opponents, extend: TeamRepresenter,
82
+ class: Team
83
+
84
+ collection :teams, extend: TeamRepresenter,
85
+ class: Team
86
+
87
+ collection :venues, extend: VenueRepresenter,
88
+ class: Venue
89
+ end
90
+ end
@@ -0,0 +1,28 @@
1
+ module Stattleship
2
+ class TeamOutcomeStreaks < Stattleship::Endpoint
3
+ def populate
4
+ team_outcome_streaks.each do |team_outcome_streak|
5
+ populate_league(team_outcome_streak)
6
+ populate_season(team_outcome_streak)
7
+ populate_teams(team_outcome_streak)
8
+ end
9
+ end
10
+ end
11
+
12
+ module TeamOutcomeStreaksRepresenter
13
+ include Roar::JSON
14
+ include Stattleship::Models
15
+
16
+ collection :team_outcome_streaks, extend: TeamOutcomeStreakRepresenter,
17
+ class: TeamOutcomeStreak
18
+
19
+ collection :leagues, extend: LeagueRepresenter,
20
+ class: League
21
+
22
+ collection :seasons, extend: SeasonRepresenter,
23
+ class: Season
24
+
25
+ collection :teams, extend: TeamRepresenter,
26
+ class: Team
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module Stattleship
2
+ class Teams < Stattleship::Endpoint
3
+ def populate
4
+ teams.each do |team|
5
+ populate_team(team)
6
+ end
7
+ end
8
+ end
9
+
10
+ module TeamsRepresenter
11
+ include Roar::JSON
12
+ include Stattleship::Models
13
+
14
+ collection :leagues, extend: LeagueRepresenter,
15
+ class: League
16
+
17
+ collection :teams, extend: TeamRepresenter,
18
+ class: Team
19
+ end
20
+ end
@@ -0,0 +1,58 @@
1
+ module Stattleship
2
+ class TopStat < OpenStruct
3
+ def to_sentence
4
+ "#{player.name} had #{format_stat(stat)} #{stat_name} in #{game.name} for the #{place.ordinalize} best performance"
5
+ end
6
+
7
+ def format_stat(value)
8
+ StatFormatter.stat(stat_name: stat_name, value: stat)
9
+ end
10
+ end
11
+
12
+ class TopStats < Stattleship::Endpoint
13
+ def populate
14
+ top_stats.each do |top_stat|
15
+ populate_games(top_stat)
16
+
17
+ games.each do |game|
18
+ populate_game(game)
19
+ end
20
+
21
+ populate_players(top_stat)
22
+ populate_player_teams(top_stat)
23
+ end
24
+ end
25
+ end
26
+
27
+ module TopStatsRepresenter
28
+ include Roar::JSON
29
+ include Roar::Coercion
30
+ include Stattleship::Models
31
+
32
+ collection :top_stats, class: Stattleship::TopStat do
33
+ property :game_id
34
+ property :place, type: Integer
35
+ property :player_id
36
+ property :stat, type: BigDecimal
37
+ property :stat_name
38
+ end
39
+
40
+ collection :away_teams, extend: TeamRepresenter,
41
+ class: Team
42
+
43
+ collection :home_teams, extend: TeamRepresenter,
44
+ class: Team
45
+
46
+ collection :winning_teams, extend: TeamRepresenter,
47
+ class: Team
48
+
49
+ collection :games, extend: GameRepresenter,
50
+ class: Game
51
+
52
+ collection :players, extend: PlayerRepresenter,
53
+ class: Player
54
+
55
+ collection :teams, extend: TeamRepresenter,
56
+ class: Team
57
+ end
58
+ end
@@ -0,0 +1,37 @@
1
+ module Stattleship
2
+ class TotalPlayerStat < Stattleship::Endpoint
3
+ def to_sentence
4
+ "#{player.name} has #{format_stat(total)} #{stat}"
5
+ end
6
+
7
+ def format_stat(value)
8
+ StatFormatter.stat(stat_name: stat, value: total)
9
+ end
10
+
11
+ def self.fetch(path:, params:)
12
+ super.first
13
+ end
14
+
15
+ def populate
16
+ populate_players(total_player_stat)
17
+ populate_player_teams(total_player_stat)
18
+ total_player_stat
19
+ end
20
+ end
21
+
22
+ module TotalPlayerStatRepresenter
23
+ include Roar::JSON
24
+ include Roar::Coercion
25
+
26
+ property :total_player_stat, class: Stattleship::TotalPlayerStat do
27
+ property :player_id
28
+ property :stat
29
+ property :total, type: BigDecimal
30
+ end
31
+
32
+ collection :players, extend: Stattleship::Models::PlayerRepresenter,
33
+ class: Stattleship::Models::Player
34
+ collection :teams, extend: Stattleship::Models::TeamRepresenter,
35
+ class: Stattleship::Models::Team
36
+ end
37
+ end