sportdb-models 1.19.1 → 2.0.0

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/Manifest.txt +27 -38
  3. data/Rakefile +1 -1
  4. data/lib/sportdb/models.rb +55 -49
  5. data/lib/sportdb/{deleter.rb → models/deleter.rb} +3 -9
  6. data/lib/sportdb/models/formats.rb +23 -0
  7. data/lib/sportdb/models/models/assoc.rb +38 -0
  8. data/lib/sportdb/models/{badge.rb → models/badge.rb} +1 -1
  9. data/lib/sportdb/models/models/event.rb +55 -0
  10. data/lib/sportdb/models/{forward.rb → models/forward.rb} +3 -3
  11. data/lib/sportdb/models/{goal.rb → models/goal.rb} +1 -1
  12. data/lib/sportdb/models/models/ground.rb +16 -0
  13. data/lib/sportdb/models/{group.rb → models/group.rb} +10 -7
  14. data/lib/sportdb/models/models/league.rb +20 -0
  15. data/lib/sportdb/models/{roster.rb → models/lineup.rb} +3 -4
  16. data/lib/sportdb/models/{game.rb → models/match.rb} +16 -60
  17. data/lib/sportdb/models/{person.rb → models/person.rb} +0 -0
  18. data/lib/sportdb/models/{round.rb → models/round.rb} +1 -6
  19. data/lib/sportdb/models/{season.rb → models/season.rb} +0 -0
  20. data/lib/sportdb/models/{stage.rb → models/stage.rb} +9 -5
  21. data/lib/sportdb/models/{stats/alltime_standing_entry.rb → models/stats/alltime_standing.rb} +9 -1
  22. data/lib/sportdb/models/{stats/event_standing_entry.rb → models/stats/event_standing.rb} +11 -1
  23. data/lib/sportdb/models/{stats/group_standing_entry.rb → models/stats/group_standing.rb} +10 -1
  24. data/lib/sportdb/models/models/team.rb +56 -0
  25. data/lib/sportdb/models/{world → models/world}/city.rb +2 -2
  26. data/lib/sportdb/models/{world → models/world}/continent.rb +0 -0
  27. data/lib/sportdb/models/{world → models/world}/country.rb +0 -0
  28. data/lib/sportdb/models/{world → models/world}/state.rb +0 -0
  29. data/lib/sportdb/{schema.rb → models/schema.rb} +98 -74
  30. data/lib/sportdb/{stats.rb → models/stats.rb} +4 -4
  31. data/lib/sportdb/models/utils.rb +24 -24
  32. data/lib/sportdb/{version.rb → models/version.rb} +4 -4
  33. data/test/helper.rb +10 -6
  34. data/test/test_changes.rb +38 -38
  35. data/test/test_cursor.rb +15 -15
  36. data/test/test_winner.rb +75 -70
  37. metadata +29 -40
  38. data/lib/sportdb/calc.rb +0 -279
  39. data/lib/sportdb/models/assoc.rb +0 -106
  40. data/lib/sportdb/models/assoc_assoc.rb +0 -15
  41. data/lib/sportdb/models/event.rb +0 -66
  42. data/lib/sportdb/models/event_ground.rb +0 -15
  43. data/lib/sportdb/models/event_team.rb +0 -16
  44. data/lib/sportdb/models/ground.rb +0 -100
  45. data/lib/sportdb/models/group_team.rb +0 -14
  46. data/lib/sportdb/models/league.rb +0 -83
  47. data/lib/sportdb/models/stage_team.rb +0 -14
  48. data/lib/sportdb/models/stats/alltime_standing.rb +0 -44
  49. data/lib/sportdb/models/stats/event_standing.rb +0 -55
  50. data/lib/sportdb/models/stats/group_standing.rb +0 -50
  51. data/lib/sportdb/models/team.rb +0 -119
  52. data/lib/sportdb/models/team_compat.rb +0 -64
  53. data/lib/sportdb/patterns.rb +0 -37
  54. data/lib/sportdb/standings.rb +0 -178
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7bccadbad7c54602a83e586c0eda1e125a5cccd6
4
- data.tar.gz: 5ae4f27e9bde5789e73422bc88bb09b58f659ac8
3
+ metadata.gz: fa3708f265e85ff08b23288dbb6a0d9a9d99892e
4
+ data.tar.gz: 0143b37e2c0eeab01bde7aaa6d66619bd81f5a4e
5
5
  SHA512:
6
- metadata.gz: 03e5aff14e4f82d56d084315b3f9570bf9c560aae14bdbe317c8b877ec37ac8d454443732670a6160c33c135427ba6892c126ac77a47a8c5230dea360b4a7c18
7
- data.tar.gz: bd3c9d78dc0cbb414ef5b99fe09e0fb1583f9dc1b79be38d1eee04ed6c9922aa09ba3f99560dd9d0363d0ecab9a469938ba41b8232198b4664e38cf6cd95021e
6
+ metadata.gz: b7835c911d31c45e12a4a4d07f29188f4bbd95cbf1a8534ed5dd025f42e02f39832763ccaf73c35847be8f4a89ef004ca7d33103ae28a7a17faf602b503d901d
7
+ data.tar.gz: 072c3f07aebb20fc10bb6df827d4a87274aa7dce0c5ad7ad9dd78c2f2555103084a871b24fa9c22b9b1c021da443343704a3ee75f66cebc9c760494e92d39966
data/Manifest.txt CHANGED
@@ -2,46 +2,35 @@ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
- lib/sportdb/calc.rb
6
- lib/sportdb/deleter.rb
7
5
  lib/sportdb/models.rb
8
- lib/sportdb/models/assoc.rb
9
- lib/sportdb/models/assoc_assoc.rb
10
- lib/sportdb/models/badge.rb
11
- lib/sportdb/models/event.rb
12
- lib/sportdb/models/event_ground.rb
13
- lib/sportdb/models/event_team.rb
14
- lib/sportdb/models/forward.rb
15
- lib/sportdb/models/game.rb
16
- lib/sportdb/models/goal.rb
17
- lib/sportdb/models/ground.rb
18
- lib/sportdb/models/group.rb
19
- lib/sportdb/models/group_team.rb
20
- lib/sportdb/models/league.rb
21
- lib/sportdb/models/person.rb
22
- lib/sportdb/models/roster.rb
23
- lib/sportdb/models/round.rb
24
- lib/sportdb/models/season.rb
25
- lib/sportdb/models/stage.rb
26
- lib/sportdb/models/stage_team.rb
27
- lib/sportdb/models/stats/alltime_standing.rb
28
- lib/sportdb/models/stats/alltime_standing_entry.rb
29
- lib/sportdb/models/stats/event_standing.rb
30
- lib/sportdb/models/stats/event_standing_entry.rb
31
- lib/sportdb/models/stats/group_standing.rb
32
- lib/sportdb/models/stats/group_standing_entry.rb
33
- lib/sportdb/models/team.rb
34
- lib/sportdb/models/team_compat.rb
6
+ lib/sportdb/models/deleter.rb
7
+ lib/sportdb/models/formats.rb
8
+ lib/sportdb/models/models/assoc.rb
9
+ lib/sportdb/models/models/badge.rb
10
+ lib/sportdb/models/models/event.rb
11
+ lib/sportdb/models/models/forward.rb
12
+ lib/sportdb/models/models/goal.rb
13
+ lib/sportdb/models/models/ground.rb
14
+ lib/sportdb/models/models/group.rb
15
+ lib/sportdb/models/models/league.rb
16
+ lib/sportdb/models/models/lineup.rb
17
+ lib/sportdb/models/models/match.rb
18
+ lib/sportdb/models/models/person.rb
19
+ lib/sportdb/models/models/round.rb
20
+ lib/sportdb/models/models/season.rb
21
+ lib/sportdb/models/models/stage.rb
22
+ lib/sportdb/models/models/stats/alltime_standing.rb
23
+ lib/sportdb/models/models/stats/event_standing.rb
24
+ lib/sportdb/models/models/stats/group_standing.rb
25
+ lib/sportdb/models/models/team.rb
26
+ lib/sportdb/models/models/world/city.rb
27
+ lib/sportdb/models/models/world/continent.rb
28
+ lib/sportdb/models/models/world/country.rb
29
+ lib/sportdb/models/models/world/state.rb
30
+ lib/sportdb/models/schema.rb
31
+ lib/sportdb/models/stats.rb
35
32
  lib/sportdb/models/utils.rb
36
- lib/sportdb/models/world/city.rb
37
- lib/sportdb/models/world/continent.rb
38
- lib/sportdb/models/world/country.rb
39
- lib/sportdb/models/world/state.rb
40
- lib/sportdb/patterns.rb
41
- lib/sportdb/schema.rb
42
- lib/sportdb/standings.rb
43
- lib/sportdb/stats.rb
44
- lib/sportdb/version.rb
33
+ lib/sportdb/models/version.rb
45
34
  test/helper.rb
46
35
  test/test_changes.rb
47
36
  test/test_cursor.rb
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'hoe'
2
- require './lib/sportdb/version.rb'
2
+ require './lib/sportdb/models/version.rb'
3
3
 
4
4
 
5
5
  Hoe.spec 'sportdb-models' do
@@ -8,54 +8,41 @@ require 'persondb/models'
8
8
 
9
9
  # our own code
10
10
 
11
- require 'sportdb/version' # let version always go first
12
-
13
- require 'sportdb/patterns'
14
- require 'sportdb/models/forward'
15
- require 'sportdb/models/world/city'
16
- require 'sportdb/models/world/country'
17
- require 'sportdb/models/world/continent'
18
- require 'sportdb/models/world/state'
19
- require 'sportdb/models/assoc'
20
- require 'sportdb/models/assoc_assoc'
21
- require 'sportdb/models/badge'
22
- require 'sportdb/models/event'
23
- require 'sportdb/models/event_ground'
24
- require 'sportdb/models/event_team'
25
- require 'sportdb/models/game'
26
- require 'sportdb/models/goal'
27
- require 'sportdb/models/ground'
28
- require 'sportdb/models/group'
29
- require 'sportdb/models/group_team'
30
- require 'sportdb/models/league'
31
- require 'sportdb/models/person'
32
- require 'sportdb/models/roster'
33
- require 'sportdb/models/round'
34
- require 'sportdb/models/season'
35
- require 'sportdb/models/stage'
36
- require 'sportdb/models/stage_team'
37
- require 'sportdb/models/team'
38
- require 'sportdb/models/team_compat' ### fix/todo: move to compat gem !!!!!
39
-
40
-
41
- require 'sportdb/models/stats/alltime_standing'
42
- require 'sportdb/models/stats/alltime_standing_entry'
43
- require 'sportdb/models/stats/event_standing'
44
- require 'sportdb/models/stats/event_standing_entry'
45
- require 'sportdb/models/stats/group_standing'
46
- require 'sportdb/models/stats/group_standing_entry'
47
-
48
- require 'sportdb/models/utils' # e.g. GameCursor
49
-
50
-
51
- require 'sportdb/schema' # NB: requires sportdb/models (include SportDB::Models)
52
-
53
-
54
- require 'sportdb/calc' # fix/todo: obsolete - replace w/ standings
55
- require 'sportdb/standings'
56
-
57
- require 'sportdb/deleter'
58
- require 'sportdb/stats'
11
+ require 'sportdb/models/version' # let version always go first
12
+
13
+ require 'sportdb/models/formats'
14
+ require 'sportdb/models/models/forward'
15
+
16
+ require 'sportdb/models/models/world/city'
17
+ require 'sportdb/models/models/world/country'
18
+ require 'sportdb/models/models/world/continent'
19
+ require 'sportdb/models/models/world/state'
20
+
21
+ require 'sportdb/models/models/assoc'
22
+ require 'sportdb/models/models/badge'
23
+ require 'sportdb/models/models/event'
24
+ require 'sportdb/models/models/goal'
25
+ require 'sportdb/models/models/ground'
26
+ require 'sportdb/models/models/group'
27
+ require 'sportdb/models/models/league'
28
+ require 'sportdb/models/models/lineup'
29
+ require 'sportdb/models/models/match'
30
+ require 'sportdb/models/models/person'
31
+ require 'sportdb/models/models/round'
32
+ require 'sportdb/models/models/season'
33
+ require 'sportdb/models/models/stage'
34
+ require 'sportdb/models/models/team'
35
+
36
+ require 'sportdb/models/models/stats/alltime_standing'
37
+ require 'sportdb/models/models/stats/event_standing'
38
+ require 'sportdb/models/models/stats/group_standing'
39
+
40
+ require 'sportdb/models/schema' # note: requires sportdb/models (include SportDB::Models)
41
+
42
+ require 'sportdb/models/utils' # e.g. MatchCursor
43
+
44
+ require 'sportdb/models/deleter'
45
+ require 'sportdb/models/stats'
59
46
 
60
47
 
61
48
  module SportDb
@@ -155,5 +142,24 @@ module SportDb
155
142
  end # module SportDb
156
143
 
157
144
 
145
+
146
+ module SportDb
147
+ module Models
148
+ ##################
149
+ # add alias why? why not?
150
+ Competition = Event
151
+ Comp = Event
152
+
153
+ LineUp = Lineup
154
+ Squad = Lineup
155
+
156
+ Game = Match ## add (old) alias - why? why not?
157
+ end # module Models
158
+ end # module SportDb
159
+
160
+
161
+
158
162
  ## say hello
159
- puts SportDb::Module::Models.banner if defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG
163
+ puts SportDb::Module::Models.banner
164
+
165
+
@@ -5,7 +5,7 @@ module SportDb
5
5
  ######
6
6
  # note: make models available in sportdb module by default with namespace
7
7
  # e.g. lets you use Team instead of Model::Team
8
- include SportDb::Models
8
+ include Models
9
9
 
10
10
  def run
11
11
  # for now delete all tables
@@ -19,7 +19,7 @@ module SportDb
19
19
 
20
20
  Goal.delete_all
21
21
 
22
- Game.delete_all
22
+ Match.delete_all
23
23
  Event.delete_all
24
24
  EventTeam.delete_all
25
25
  EventGround.delete_all
@@ -30,7 +30,7 @@ module SportDb
30
30
  Round.delete_all
31
31
  Badge.delete_all
32
32
 
33
- Roster.delete_all
33
+ Lineup.delete_all
34
34
 
35
35
  Team.delete_all
36
36
 
@@ -41,12 +41,6 @@ module SportDb
41
41
 
42
42
  Assoc.delete_all # associations / organizations
43
43
  AssocAssoc.delete_all # associations / organizations
44
-
45
- ## note: moved to racing.db - delete/remove!!!
46
- ## Record.delete_all
47
- ## Run.delete_all
48
- ## Race.delete_all
49
- ## Track.delete_all
50
44
  end
51
45
 
52
46
  end # class Deleter
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ module SportDb
4
+
5
+ # collection of regex patterns for reuse (SportDb specific)
6
+
7
+ ### todo: add a patterns.md page to github ??
8
+ ## - add regexper pics??
9
+
10
+ TEAM_KEY_RE = %r{ \A
11
+ [a-z_][a-z0-9_]*
12
+ \z}x
13
+ TEAM_KEY_MESSAGE = "expected one or more lowercase letters a-z (or 0-9 or _; must start with a-z or _)"
14
+
15
+
16
+ # must start w/ letter A-Z (2nd,3rd,4th or 5th can be number)
17
+ TEAM_CODE_RE = %r{ \A
18
+ [A-Z_][A-Z0-9_]*
19
+ \z}x
20
+ TEAM_CODE_MESSAGE = "expected one or more uppercase letters A-Z (or 0-9 or _; must start with A-Z or _)"
21
+
22
+
23
+ end # module SportDb
@@ -0,0 +1,38 @@
1
+ module SportDb
2
+ module Model
3
+
4
+ class Assoc < ActiveRecord::Base
5
+
6
+
7
+ has_many :parent_assoc_assocs, class_name: 'AssocAssoc', foreign_key: 'assoc2_id'
8
+ ## child_assocs - use child_assocs? - (direct) member/child assocs instead of member?
9
+ has_many :member_assoc_assocs, class_name: 'AssocAssoc', foreign_key: 'assoc1_id'
10
+
11
+
12
+ ## note: split member_assocs into two sets (into national=true and national=false)
13
+ # e.g. fifa has six member confederations (non-national) and 216 national assocs
14
+ ## note: includes all member (sub assocs + national assocs) - rename to member_assocs?
15
+ has_many :all_assocs, class_name: 'Assoc', :source => :assoc2, :through => :member_assoc_assocs
16
+ ## use zone/region as name instead of sub ( for confederatons,zones,etc.)
17
+ has_many :sub_assocs, -> { where( national: false ) }, class_name: 'Assoc', :source => :assoc2, :through => :member_assoc_assocs
18
+ has_many :national_assocs, -> { where( national: true ) }, class_name: 'Assoc', :source => :assoc2, :through => :member_assoc_assocs
19
+
20
+ ## for now can have more than one (direct) parent assoc
21
+ ## e.g. Africa Fed and Arab League Fed
22
+ has_many :parent_assocs, class_name: 'Assoc', :source => :assoc1, :through => :parent_assoc_assocs
23
+
24
+ # assoc only can have one direct team for now (uses belongs_to on other side)
25
+ # has_one :team
26
+ end # class Assoc
27
+
28
+
29
+ class AssocAssoc < ActiveRecord::Base
30
+ self.table_name = 'assocs_assocs'
31
+
32
+ belongs_to :assoc1, class_name: 'Assoc', foreign_key: 'assoc1_id' # parent assoc
33
+ belongs_to :assoc2, class_name: 'Assoc', foreign_key: 'assoc2_id' # child assoc is_member_of parent assoc
34
+
35
+ end # class AssocAssoc
36
+
37
+ end # module Model
38
+ end # module SportDb
@@ -8,7 +8,7 @@ class Badge < ActiveRecord::Base
8
8
  belongs_to :season
9
9
 
10
10
  end # class Badge
11
-
11
+
12
12
 
13
13
  end # module Model
14
14
  end # module SportDb
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ module SportDb
4
+ module Model
5
+
6
+ class Event < ActiveRecord::Base
7
+
8
+ belongs_to :league
9
+ belongs_to :season
10
+
11
+ has_many :matches, -> { order('pos') }, class_name: 'Match'
12
+
13
+ has_many :rounds, -> { order('pos') }
14
+ has_many :groups, -> { order('pos') }
15
+ has_many :stages
16
+
17
+ has_many :event_teams, class_name: 'EventTeam'
18
+ has_many :teams, :through => :event_teams
19
+
20
+ has_many :event_grounds, class_name: 'EventGround'
21
+ has_many :grounds, :through => :event_grounds
22
+
23
+
24
+ before_save :on_before_save
25
+
26
+ def on_before_save
27
+ # event key is composite of league + season (e.g. at.2012/13) etc.
28
+ self.key = "#{league.key}.#{season.key}"
29
+ end
30
+
31
+ def name
32
+ ## todo/fix: check attr_reader(:name) or such first if NOT nil !!
33
+ "#{league.name} #{season.name}"
34
+ end
35
+
36
+ end # class Event
37
+
38
+
39
+ class EventTeam < ActiveRecord::Base
40
+ self.table_name = 'events_teams'
41
+
42
+ belongs_to :event
43
+ belongs_to :team
44
+ end # class EventTeam
45
+
46
+
47
+ class EventGround < ActiveRecord::Base
48
+ self.table_name = 'events_grounds'
49
+
50
+ belongs_to :event
51
+ belongs_to :ground
52
+ end # class EventGround
53
+
54
+ end # module Model
55
+ end # module SportDb
@@ -15,14 +15,14 @@ module SportDb
15
15
 
16
16
  Person = PersonDb::Model::Person
17
17
 
18
- ## nb: for now only team and league use worlddb tables
18
+ ## note: for now only team and league use worlddb tables
19
19
  # e.g. with belongs_to assoc (country,region)
20
20
 
21
21
  class Assoc < ActiveRecord::Base ; end
22
- class Team < ActiveRecord::Base ; end
22
+ class Team < ActiveRecord::Base ; end
23
23
  class League < ActiveRecord::Base ; end
24
24
  class Ground < ActiveRecord::Base ; end
25
- class Goal < ActiveRecord::Base ; end
25
+ class Goal < ActiveRecord::Base ; end
26
26
 
27
27
  end
28
28
 
@@ -5,7 +5,7 @@ module SportDb
5
5
 
6
6
  class Goal < ActiveRecord::Base
7
7
 
8
- belongs_to :game
8
+ belongs_to :match
9
9
  belongs_to :person, class_name: 'PersonDb::Model::Person', foreign_key: 'person_id'
10
10
 
11
11
  end # class Goal
@@ -0,0 +1,16 @@
1
+
2
+ module SportDb
3
+ module Model
4
+
5
+ class Ground < ActiveRecord::Base
6
+
7
+ belongs_to :country, class_name: 'WorldDb::Model::Country', foreign_key: 'country_id'
8
+ belongs_to :city, class_name: 'WorldDb::Model::City', foreign_key: 'city_id'
9
+
10
+ has_many :matches
11
+
12
+ end # class Ground
13
+
14
+ end # module Model
15
+ end # module SportDb
16
+
@@ -5,11 +5,7 @@ module SportDb
5
5
 
6
6
  class Group < ActiveRecord::Base
7
7
 
8
- if ActiveRecord::VERSION::MAJOR == 3
9
- has_many :games, order: 'pos'
10
- else
11
- has_many :games, -> { order('pos') }
12
- end
8
+ has_many :matches, -> { order('pos') }, class_name: 'Match'
13
9
 
14
10
  belongs_to :event
15
11
 
@@ -17,7 +13,14 @@ end
17
13
  has_many :teams, :through => :group_teams
18
14
 
19
15
  end # class Group
20
-
21
-
16
+
17
+
18
+ class GroupTeam < ActiveRecord::Base
19
+ self.table_name = 'groups_teams'
20
+
21
+ belongs_to :group
22
+ belongs_to :team
23
+ end # class GroupTeam
24
+
22
25
  end # module Model
23
26
  end # module SportDb