sportdb-models 1.19.0 → 2.0.3

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -20
  3. data/Manifest.txt +27 -38
  4. data/README.md +31 -31
  5. data/Rakefile +32 -32
  6. data/lib/sportdb/models.rb +212 -159
  7. data/lib/sportdb/{deleter.rb → models/deleter.rb} +3 -9
  8. data/lib/sportdb/models/formats.rb +23 -0
  9. data/lib/sportdb/models/models/assoc.rb +38 -0
  10. data/lib/sportdb/models/{badge.rb → models/badge.rb} +14 -14
  11. data/lib/sportdb/models/models/event.rb +55 -0
  12. data/lib/sportdb/models/{forward.rb → models/forward.rb} +55 -55
  13. data/lib/sportdb/models/{goal.rb → models/goal.rb} +15 -15
  14. data/lib/sportdb/models/models/ground.rb +16 -0
  15. data/lib/sportdb/models/{group.rb → models/group.rb} +10 -7
  16. data/lib/sportdb/models/models/league.rb +20 -0
  17. data/lib/sportdb/models/{roster.rb → models/lineup.rb} +17 -18
  18. data/lib/sportdb/models/{game.rb → models/match.rb} +18 -61
  19. data/lib/sportdb/models/{person.rb → models/person.rb} +21 -21
  20. data/lib/sportdb/models/{round.rb → models/round.rb} +1 -6
  21. data/lib/sportdb/models/{season.rb → models/season.rb} +15 -14
  22. data/lib/sportdb/models/{stage.rb → models/stage.rb} +9 -5
  23. data/lib/sportdb/models/{stats/alltime_standing_entry.rb → models/stats/alltime_standing.rb} +9 -1
  24. data/lib/sportdb/models/{stats/event_standing_entry.rb → models/stats/event_standing.rb} +31 -21
  25. data/lib/sportdb/models/{stats/group_standing_entry.rb → models/stats/group_standing.rb} +10 -1
  26. data/lib/sportdb/models/models/team.rb +56 -0
  27. data/lib/sportdb/models/{world → models/world}/city.rb +2 -2
  28. data/lib/sportdb/models/{world → models/world}/continent.rb +20 -20
  29. data/lib/sportdb/models/{world → models/world}/country.rb +0 -0
  30. data/lib/sportdb/models/{world → models/world}/state.rb +19 -19
  31. data/lib/sportdb/models/schema.rb +466 -0
  32. data/lib/sportdb/models/stats.rb +23 -0
  33. data/lib/sportdb/models/utils.rb +24 -24
  34. data/lib/sportdb/{version.rb → models/version.rb} +27 -22
  35. data/test/helper.rb +46 -42
  36. data/test/test_changes.rb +38 -38
  37. data/test/test_cursor.rb +15 -15
  38. data/test/test_winner.rb +75 -70
  39. metadata +39 -44
  40. data/lib/sportdb/calc.rb +0 -279
  41. data/lib/sportdb/models/assoc.rb +0 -106
  42. data/lib/sportdb/models/assoc_assoc.rb +0 -15
  43. data/lib/sportdb/models/event.rb +0 -66
  44. data/lib/sportdb/models/event_ground.rb +0 -15
  45. data/lib/sportdb/models/event_team.rb +0 -16
  46. data/lib/sportdb/models/ground.rb +0 -100
  47. data/lib/sportdb/models/group_team.rb +0 -14
  48. data/lib/sportdb/models/league.rb +0 -83
  49. data/lib/sportdb/models/stage_team.rb +0 -14
  50. data/lib/sportdb/models/stats/alltime_standing.rb +0 -44
  51. data/lib/sportdb/models/stats/event_standing.rb +0 -55
  52. data/lib/sportdb/models/stats/group_standing.rb +0 -50
  53. data/lib/sportdb/models/team.rb +0 -119
  54. data/lib/sportdb/models/team_compat.rb +0 -64
  55. data/lib/sportdb/patterns.rb +0 -37
  56. data/lib/sportdb/schema.rb +0 -397
  57. data/lib/sportdb/standings.rb +0 -178
  58. data/lib/sportdb/stats.rb +0 -27
@@ -1,178 +0,0 @@
1
- # encoding: utf-8
2
-
3
-
4
- ##############
5
- ##
6
- ## fix/todo:
7
- ## - reuse in footballcsv/build e.g. require sportdb and remove "old" code!!!!
8
-
9
- module SportDb
10
-
11
-
12
- class StandingsLine
13
- attr_accessor :rank, :team_name,
14
- :played, :won, :lost, :drawn, ## -- total
15
- :goals_for, :goals_against, :pts,
16
- :home_played, :home_won, :home_lost, :home_drawn, ## -- home
17
- :home_goals_for, :home_goals_against, :home_pts,
18
- :away_played, :away_won, :away_lost, :away_drawn, ## -- away
19
- :away_goals_for, :away_goals_against, :away_pts
20
-
21
- def initialize( team_name )
22
- @rank = nil # use 0? why? why not?
23
- @team_name = team_name
24
- @played = @home_played = @away_played = 0
25
- @won = @home_won = @away_won = 0
26
- @lost = @home_lost = @away_lost = 0
27
- @drawn = @home_drawn = @away_drawn = 0
28
- @goals_for = @home_goals_for = @away_goals_for = 0
29
- @goals_against = @home_goals_against = @away_goals_against = 0
30
- @pts = @home_pts = @away_pts = 0
31
-
32
- ### fix: add @recs too - to count number of records (e.g. appearances/seasons etc.)
33
- end
34
- end # class StandingsLine
35
-
36
-
37
- class Standings
38
-
39
- def initialize( opts={} )
40
- ## fix:
41
- # passing in e.g. pts for win (3? 2? etc.)
42
- # default to 3 for now
43
-
44
- ## lets you pass in 2 as an alterantive, for example
45
- @pts_won = opts[:pts_won] || 3
46
-
47
- @lines = {} # StandingsLines cached by team name/key
48
- end
49
-
50
-
51
- def update( match_or_matches )
52
- puts " [debug] update match_or_matches.class.name: #{match_or_matches.class.name}"
53
-
54
- ## convenience - update all matches at once
55
- if match_or_matches.is_a?( Array ) ||
56
- match_or_matches.is_a?( ActiveRecord::Associations::CollectionProxy )
57
- matches = match_or_matches
58
- matches.each_with_index do |match,i| # note: index(i) starts w/ zero (0)
59
- update_match( match )
60
- end
61
- else
62
- match = match_or_matches
63
- update_match( match )
64
- end
65
- self # note: return self to allow chaining
66
- end
67
-
68
- def to_a
69
- ## return lines; sort and add rank
70
- ## note: will update rank!!!! (side effect)
71
-
72
- #############################
73
- ### calc ranking position (rank)
74
- ## fix/allow same rank e.g. all 1 or more than one team 3rd etc.
75
-
76
- # build array from hash
77
- ary = []
78
- @lines.each do |k,v|
79
- ary << v
80
- end
81
-
82
- ary.sort! do |l,r|
83
- ## note: reverse order (thus, change l,r to r,l)
84
- value = r.pts <=> l.pts
85
- if value == 0 # same pts try goal diff
86
- value = (r.goals_for-r.goals_against) <=> (l.goals_for-l.goals_against)
87
- if value == 0 # same goal diff too; try assume more goals better for now
88
- value = r.goals_for <=> l.goals_for
89
- end
90
- end
91
- value
92
- end
93
-
94
- ## update rank using ordered array
95
- ary.each_with_index do |line,i|
96
- line.rank = i+1 ## add ranking (e.g. 1,2,3 etc.) - note: i starts w/ zero (0)
97
- end
98
-
99
- ary
100
- end # to_a
101
-
102
-
103
- private
104
- def update_match( m ) ## add a match
105
-
106
- ## puts " #{m.team1} - #{m.team2} #{m.score_str}"
107
- unless m.over?
108
- puts " !!!! skipping match - not yet over (play_at date in the future)"
109
- return
110
- end
111
-
112
- unless m.complete?
113
- puts "!!! [calc_standings] skipping match #{m.team1_name} - #{m.team2_name} - scores incomplete #{m.score_str}"
114
- return
115
- end
116
-
117
- ### fix/todo: use team1_name n team2_name ???
118
- ### fix/todo: - add extra time and penalty shootout !!!!
119
-
120
- line1 = @lines[ m.team1_name ] || StandingsLine.new( m.team1_name )
121
- line2 = @lines[ m.team2_name ] || StandingsLine.new( m.team2_name )
122
-
123
- line1.played += 1
124
- line1.home_played += 1
125
-
126
- line2.played += 1
127
- line2.away_played += 1
128
-
129
- if m.winner == 1
130
- line1.won += 1
131
- line1.home_won += 1
132
-
133
- line2.lost += 1
134
- line2.away_lost += 1
135
-
136
- line1.pts += @pts_won
137
- line1.home_pts += @pts_won
138
- elsif m.winner == 2
139
- line1.lost += 1
140
- line1.home_lost += 1
141
-
142
- line2.won += 1
143
- line2.away_won += 1
144
-
145
- line2.pts += @pts_won
146
- line2.away_pts += @pts_won
147
- else ## assume drawn/tie (that is, 0)
148
- line1.drawn += 1
149
- line1.home_drawn += 1
150
-
151
- line2.drawn += 1
152
- line2.away_drawn += 1
153
-
154
- line1.pts += 1
155
- line1.home_pts += 1
156
- line2.pts += 1
157
- line2.away_pts += 1
158
- end
159
-
160
- line1.goals_for += m.score1
161
- line1.home_goals_for += m.score1
162
- line1.goals_against += m.score2
163
- line1.home_goals_against += m.score2
164
-
165
- line2.goals_for += m.score2
166
- line2.away_goals_for += m.score2
167
- line2.goals_against += m.score1
168
- line2.away_goals_against += m.score1
169
-
170
- @lines[ m.team1_name ] = line1
171
- @lines[ m.team2_name ] = line2
172
- end # method update_match
173
-
174
- end # class Standings
175
-
176
-
177
-
178
- end # module SportDb
@@ -1,27 +0,0 @@
1
-
2
- module SportDb
3
-
4
- class Stats
5
- include Models
6
-
7
- def tables
8
- puts " #{League.count} leagues / #{Season.count} seasons"
9
- puts " #{Event.count} events (league+season recs) / #{Round.count} rounds / #{Group.count} groups"
10
- puts " #{Team.count} teams"
11
- puts " #{Game.count} games"
12
- puts " #{Badge.count} badges"
13
-
14
- puts " #{Roster.count} rosters (person+team+event recs)"
15
- puts " #{Goal.count} goals (person+game recs)"
16
-
17
- puts " #{Assoc.count} assocs|orgs"
18
- puts " #{Ground.count} grounds|stadiums"
19
-
20
- ## note: moved to racing.db -- remove/delete!!
21
- ## puts " #{Track.count} tracks / #{Race.count} races (track+event recs) / #{Run.count} runs"
22
- ## puts " #{Record.count} records (race|run+person recs)"
23
- end
24
-
25
- end # class Stats
26
-
27
- end # module SportDb