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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -20
- data/Manifest.txt +27 -38
- data/README.md +31 -31
- data/Rakefile +32 -32
- data/lib/sportdb/models.rb +212 -159
- data/lib/sportdb/{deleter.rb → models/deleter.rb} +3 -9
- data/lib/sportdb/models/formats.rb +23 -0
- data/lib/sportdb/models/models/assoc.rb +38 -0
- data/lib/sportdb/models/{badge.rb → models/badge.rb} +14 -14
- data/lib/sportdb/models/models/event.rb +55 -0
- data/lib/sportdb/models/{forward.rb → models/forward.rb} +55 -55
- data/lib/sportdb/models/{goal.rb → models/goal.rb} +15 -15
- data/lib/sportdb/models/models/ground.rb +16 -0
- data/lib/sportdb/models/{group.rb → models/group.rb} +10 -7
- data/lib/sportdb/models/models/league.rb +20 -0
- data/lib/sportdb/models/{roster.rb → models/lineup.rb} +17 -18
- data/lib/sportdb/models/{game.rb → models/match.rb} +18 -61
- data/lib/sportdb/models/{person.rb → models/person.rb} +21 -21
- data/lib/sportdb/models/{round.rb → models/round.rb} +1 -6
- data/lib/sportdb/models/{season.rb → models/season.rb} +15 -14
- data/lib/sportdb/models/{stage.rb → models/stage.rb} +9 -5
- data/lib/sportdb/models/{stats/alltime_standing_entry.rb → models/stats/alltime_standing.rb} +9 -1
- data/lib/sportdb/models/{stats/event_standing_entry.rb → models/stats/event_standing.rb} +31 -21
- data/lib/sportdb/models/{stats/group_standing_entry.rb → models/stats/group_standing.rb} +10 -1
- data/lib/sportdb/models/models/team.rb +56 -0
- data/lib/sportdb/models/{world → models/world}/city.rb +2 -2
- data/lib/sportdb/models/{world → models/world}/continent.rb +20 -20
- data/lib/sportdb/models/{world → models/world}/country.rb +0 -0
- data/lib/sportdb/models/{world → models/world}/state.rb +19 -19
- data/lib/sportdb/models/schema.rb +466 -0
- data/lib/sportdb/models/stats.rb +23 -0
- data/lib/sportdb/models/utils.rb +24 -24
- data/lib/sportdb/{version.rb → models/version.rb} +27 -22
- data/test/helper.rb +46 -42
- data/test/test_changes.rb +38 -38
- data/test/test_cursor.rb +15 -15
- data/test/test_winner.rb +75 -70
- metadata +39 -44
- data/lib/sportdb/calc.rb +0 -279
- data/lib/sportdb/models/assoc.rb +0 -106
- data/lib/sportdb/models/assoc_assoc.rb +0 -15
- data/lib/sportdb/models/event.rb +0 -66
- data/lib/sportdb/models/event_ground.rb +0 -15
- data/lib/sportdb/models/event_team.rb +0 -16
- data/lib/sportdb/models/ground.rb +0 -100
- data/lib/sportdb/models/group_team.rb +0 -14
- data/lib/sportdb/models/league.rb +0 -83
- data/lib/sportdb/models/stage_team.rb +0 -14
- data/lib/sportdb/models/stats/alltime_standing.rb +0 -44
- data/lib/sportdb/models/stats/event_standing.rb +0 -55
- data/lib/sportdb/models/stats/group_standing.rb +0 -50
- data/lib/sportdb/models/team.rb +0 -119
- data/lib/sportdb/models/team_compat.rb +0 -64
- data/lib/sportdb/patterns.rb +0 -37
- data/lib/sportdb/schema.rb +0 -397
- data/lib/sportdb/standings.rb +0 -178
- data/lib/sportdb/stats.rb +0 -27
data/lib/sportdb/standings.rb
DELETED
@@ -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
|
data/lib/sportdb/stats.rb
DELETED
@@ -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
|