sportdb-models 1.19.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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