sportdb 0.9.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/Manifest.txt +12 -55
  2. data/Rakefile +11 -10
  3. data/bin/sportdb +1 -2
  4. data/config/fixtures.de.yml +42 -0
  5. data/config/fixtures.en.yml +52 -0
  6. data/config/fixtures.es.yml +44 -0
  7. data/config/fixtures.pt.yml +44 -0
  8. data/lib/sportdb/cli/main.rb +189 -0
  9. data/lib/sportdb/cli/opts.rb +15 -69
  10. data/lib/sportdb/data/fixtures.rb +205 -0
  11. data/lib/sportdb/{keys.rb → data/keys.rb} +9 -2
  12. data/lib/sportdb/data/models.rb +43 -0
  13. data/lib/sportdb/deleter.rb +27 -0
  14. data/lib/sportdb/lang.rb +265 -0
  15. data/lib/sportdb/models/event.rb +0 -34
  16. data/lib/sportdb/reader.rb +322 -78
  17. data/lib/sportdb/stats.rb +28 -0
  18. data/lib/sportdb/utils.rb +90 -13
  19. data/lib/sportdb/version.rb +1 -1
  20. data/lib/sportdb.rb +49 -198
  21. data/tasks/test.rb +163 -0
  22. metadata +46 -71
  23. data/data/america/2011.rb +0 -36
  24. data/data/america/2011.txt +0 -110
  25. data/data/america/2011.yml +0 -30
  26. data/data/america/teams.txt +0 -26
  27. data/data/at/2011_12/bl.rb +0 -30
  28. data/data/at/2011_12/bl.txt +0 -79
  29. data/data/at/2011_12/cup.rb +0 -66
  30. data/data/at/2012_13/bl.rb +0 -33
  31. data/data/at/2012_13/bl.txt +0 -198
  32. data/data/at/2012_13/cup.rb +0 -111
  33. data/data/at/2012_13/cup.txt +0 -89
  34. data/data/at/badges.rb +0 -22
  35. data/data/at/teams.txt +0 -88
  36. data/data/cl/2011_12/cl.rb +0 -88
  37. data/data/cl/2011_12/el.rb +0 -65
  38. data/data/cl/2012_13/cl.rb +0 -324
  39. data/data/cl/badges.rb +0 -68
  40. data/data/cl/teams.txt +0 -46
  41. data/data/copa/sud_2012_13.rb +0 -38
  42. data/data/copa/sud_2012_13.txt +0 -49
  43. data/data/copa/teams.txt +0 -35
  44. data/data/de/2012_13/bl.rb +0 -38
  45. data/data/de/2012_13/bl.txt +0 -216
  46. data/data/de/teams.txt +0 -23
  47. data/data/en/2012_13/pl.rb +0 -39
  48. data/data/en/2012_13/pl.txt +0 -291
  49. data/data/en/teams.txt +0 -26
  50. data/data/es/teams.txt +0 -8
  51. data/data/euro/2008.rb +0 -30
  52. data/data/euro/2008.txt +0 -114
  53. data/data/euro/2012.rb +0 -25
  54. data/data/euro/2012.txt +0 -114
  55. data/data/euro/teams.txt +0 -36
  56. data/data/leagues.rb +0 -68
  57. data/data/mx/apertura_2012.rb +0 -35
  58. data/data/mx/apertura_2012.txt +0 -106
  59. data/data/mx/teams.txt +0 -20
  60. data/data/nfl/teams.txt +0 -46
  61. data/data/nhl/teams.txt +0 -40
  62. data/data/ro/l1_2012_13.rb +0 -137
  63. data/data/ro/teams.txt +0 -26
  64. data/data/seasons.rb +0 -22
  65. data/data/world/2010.rb +0 -93
  66. data/data/world/2010.txt +0 -215
  67. data/data/world/quali_2012_13_america.rb +0 -25
  68. data/data/world/quali_2012_13_america.txt +0 -41
  69. data/data/world/quali_2012_13_europe.rb +0 -32
  70. data/data/world/quali_2012_13_europe_c.txt +0 -85
  71. data/data/world/quali_2012_13_europe_i.txt +0 -74
  72. data/data/world/teams.txt +0 -25
  73. data/lib/sportdb/cli/runner.rb +0 -147
  74. data/lib/sportdb/loader.rb +0 -82
  75. data/lib/sportdb/templater.rb +0 -81
  76. data/templates/fixtures.rb.erb +0 -51
data/lib/sportdb/utils.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
 
2
3
  ### some utils moved to worldbdb/utils for reuse
3
4
 
@@ -5,33 +6,43 @@
5
6
  module SportDB::FixtureHelpers
6
7
 
7
8
  def is_round?( line )
8
- line =~ /Spieltag|Runde|Achtelfinale|Viertelfinale|Halbfinale|Finale/
9
+ line =~ SportDB.lang.regex_round
9
10
  end
10
-
11
+
11
12
  def is_group?( line )
12
13
  # NB: check after is_round? (round may contain group reference!)
13
- line =~ /Gruppe|Group/
14
+ line =~ SportDB.lang.regex_group
14
15
  end
15
-
16
+
16
17
  def is_knockout_round?( line )
17
- if line =~ /Achtelfinale|Viertelfinale|Halbfinale|Spiel um Platz 3|Finale|K\.O\.|Knockout/
18
+
19
+ ## todo: check for adding ignore case for regex (e.g. 1st leg/1st Leg)
20
+
21
+ if line =~ SportDB.lang.regex_leg1
22
+ puts " two leg knockout; skip knockout flag on first leg"
23
+ false
24
+ elsif line =~ SportDB.lang.regex_knockout_round
18
25
  puts " setting knockout flag to true"
19
26
  true
27
+ elsif line =~ /K\.O\.|Knockout/
28
+ ## NB: add two language independent markers, that is, K.O. and Knockout
29
+ puts " setting knockout flag to true (lang independent marker)"
30
+ true
20
31
  else
21
32
  false
22
33
  end
23
34
  end
24
35
 
25
36
  def find_group_title_and_pos!( line )
26
- ## group pos - for now support single digit e.g 1,2,3 or letter e.g. A,B,C
37
+ ## group pos - for now support single digit e.g 1,2,3 or letter e.g. A,B,C or HEX
27
38
  ## nb: (?:) = is for non-capturing group(ing)
28
- regex = /(?:Group|Gruppe)\s+((?:\d{1}|[A-Z]{1}))\b/
39
+ regex = /(?:Group|Gruppe|Grupo)\s+((?:\d{1}|[A-Z]{1,3}))\b/
29
40
 
30
41
  match = regex.match( line )
31
42
 
32
43
  return [nil,nil] if match.nil?
33
44
 
34
- pos = case match[1]
45
+ pos = case match[1]
35
46
  when 'A' then 1
36
47
  when 'B' then 2
37
48
  when 'C' then 3
@@ -42,6 +53,9 @@ module SportDB::FixtureHelpers
42
53
  when 'H' then 8
43
54
  when 'I' then 9
44
55
  when 'J' then 10
56
+ when 'K' then 11
57
+ when 'L' then 12
58
+ when 'HEX' then 666 # HEX for Hexagonal - todo/check: map to something else ??
45
59
  else match[1].to_i
46
60
  end
47
61
 
@@ -56,9 +70,42 @@ module SportDB::FixtureHelpers
56
70
  end
57
71
 
58
72
  def find_round_pos!( line )
73
+
74
+ ## todo: let title2 go first to cut off //
75
+ ## todo: cut of end of line comments w/ # ???
76
+
59
77
  ## fix/todo:
60
78
  ## if no round found assume last_pos+1 ??? why? why not?
61
79
 
80
+ # extract optional round pos from line
81
+ # e.g. (1) - must start line
82
+ regex = /^[ \t]*\((\d{1,3})\)[ \t]+/
83
+ if line =~ regex
84
+ puts " pos: >#{$1}<"
85
+
86
+ line.sub!( regex, '[ROUND|POS] ' ) ## NB: add back trailing space that got swallowed w/ regex -> [ \t]+
87
+ return $1.to_i
88
+ end
89
+
90
+ # continue; try some other options
91
+
92
+ # NB: do not search string after free standing / or //
93
+ # cut-off optional trailing part w/ starting w/ / or //
94
+ #
95
+ # e.g. Viertelfinale // Di+Mi 10.+11. April 2012 becomes just
96
+ # Viertelfinale
97
+
98
+ cutoff_regex = /^(.+?)[ \t]\/{1,3}[ \t]/
99
+
100
+ if line =~ cutoff_regex
101
+ line = $1.to_s # cut off the rest if regex matches
102
+ end
103
+
104
+ ## fix/todo: use cutoff_line for search
105
+ ## and use line.sub! to change original string
106
+ # e.g. Jornada 3 // 1,2 y 3 febrero
107
+ # only replaces match in local string w/ [ROUND|POS]
108
+
62
109
  regex = /\b(\d+)\b/
63
110
 
64
111
  if line =~ regex
@@ -70,7 +117,7 @@ module SportDB::FixtureHelpers
70
117
  return value
71
118
  else
72
119
  return nil
73
- end
120
+ end
74
121
  end
75
122
 
76
123
  def find_date!( line )
@@ -80,9 +127,15 @@ module SportDB::FixtureHelpers
80
127
 
81
128
  # e.g. 2012-09-14 20:30 => YYYY-MM-DD HH:MM
82
129
  regex_db = /\b(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})\b/
130
+
131
+ # e.g. 2012-09-14 w/ implied hours (set to 12:00)
132
+ regex_db2 = /\b(\d{4})-(\d{2})-(\d{2})\b/
83
133
 
84
134
  # e.g. 14.09. 20:30 => DD.MM. HH:MM
85
135
  regex_de = /\b(\d{2})\.(\d{2})\.\s+(\d{2}):(\d{2})\b/
136
+
137
+ # e.g. 14.09.2012 20:30 => DD.MM.YYYY HH:MM
138
+ regex_de2 = /\b(\d{2})\.(\d{2})\.(\d{4})\s+(\d{2}):(\d{2})\b/
86
139
 
87
140
  if line =~ regex_db
88
141
  value = "#{$1}-#{$2}-#{$3} #{$4}:#{$5}"
@@ -93,6 +146,23 @@ module SportDB::FixtureHelpers
93
146
 
94
147
  line.sub!( regex_db, '[DATE.DB]' )
95
148
 
149
+ return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
150
+ elsif line =~ regex_db2
151
+ value = "#{$1}-#{$2}-#{$3} 12:00"
152
+ puts " date: >#{value}<"
153
+
154
+ line.sub!( regex_db2, '[DATE.DB2]' )
155
+
156
+ return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
157
+ elsif line =~ regex_de2
158
+ value = "#{$3}-#{$2}-#{$1} #{$4}:#{$5}"
159
+ puts " date: >#{value}<"
160
+
161
+ ## todo: lets you configure year
162
+ ## and time zone (e.g. cet, eet, utc, etc.)
163
+
164
+ line.sub!( regex_de2, '[DATE.DE2]' )
165
+
96
166
  return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
97
167
  elsif line =~ regex_de
98
168
  value = "2012-#{$2}-#{$1} #{$3}:#{$4}"
@@ -129,18 +199,25 @@ module SportDB::FixtureHelpers
129
199
  end
130
200
 
131
201
  def find_scores!( line )
202
+
203
+ ### fix: depending on language allow 1:1 or 1-1
204
+ ## do NOT allow mix and match
205
+ ## e.g. default to en is 1-1
206
+ ## de is 1:1 etc.
207
+
208
+
132
209
  # extract score from line
133
210
  # and return it
134
211
  # NB: side effect - removes date from line string
135
212
 
136
- # e.g. 1:2 or 0:2 or 3:3
137
- regex = /\b(\d):(\d)\b/
213
+ # e.g. 1:2 or 0:2 or 3:3 // 1-1 or 0-2 or 3-3
214
+ regex = /\b(\d)[:\-](\d)\b/
138
215
 
139
216
  # e.g. 1:2nV => overtime
140
- regex_ot = /\b(\d):(\d)[ \t]?[nN][vV]\b/
217
+ regex_ot = /\b(\d)[:\-](\d)[ \t]?[nN][vV]\b/
141
218
 
142
219
  # e.g. 5:4iE => penalty
143
- regex_p = /\b(\d):(\d)[ \t]?[iI][eE]\b/
220
+ regex_p = /\b(\d)[:\-](\d)[ \t]?[iI][eE]\b/
144
221
 
145
222
  scores = []
146
223
 
@@ -1,4 +1,4 @@
1
1
 
2
2
  module SportDB
3
- VERSION = '0.9.7'
3
+ VERSION = '1.0.0'
4
4
  end
data/lib/sportdb.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+
1
4
  ###
2
5
  # NB: for local testing run like:
3
6
  #
@@ -7,14 +10,17 @@
7
10
 
8
11
  require 'yaml'
9
12
  require 'pp'
10
- require 'logger'
11
- require 'optparse'
13
+ require 'logger' ## todo/fix: no longer needed - replaced by logutils??
12
14
  require 'fileutils'
13
15
  require 'erb'
14
16
 
15
- # rubygems
17
+ # rubygems / 3rd party libs
16
18
 
17
19
  require 'active_record' ## todo: add sqlite3? etc.
20
+
21
+ require 'logutils'
22
+ require 'textutils'
23
+
18
24
  require 'worlddb'
19
25
 
20
26
 
@@ -22,7 +28,6 @@ require 'worlddb'
22
28
 
23
29
  require 'sportdb/version'
24
30
 
25
- require 'sportdb/keys'
26
31
  require 'sportdb/models/forward'
27
32
  require 'sportdb/models/badge'
28
33
  require 'sportdb/models/city'
@@ -40,11 +45,24 @@ require 'sportdb/models/season'
40
45
  require 'sportdb/models/team'
41
46
  require 'sportdb/schema' # NB: requires sportdb/models (include SportDB::Models)
42
47
  require 'sportdb/utils'
43
- require 'sportdb/loader'
44
48
  require 'sportdb/reader'
45
- require 'sportdb/templater'
46
- require 'sportdb/cli/opts'
47
- require 'sportdb/cli/runner'
49
+ require 'sportdb/lang'
50
+
51
+ require 'sportdb/deleter'
52
+ require 'sportdb/stats'
53
+
54
+ ###############
55
+ # optional: for convenience add some finders etc. for known fixtures
56
+ #
57
+ # only used for sportdb/console.rb
58
+ # and sportdb/tasks/test.rb -> rename to tasks.rb?
59
+ #
60
+ # todo/fix => remove from here and move into console.rb and tasks.rb
61
+
62
+ require 'sportdb/data/keys'
63
+ require 'sportdb/data/fixtures'
64
+ require 'sportdb/data/models' # add convenience finders for known fixtures
65
+
48
66
 
49
67
 
50
68
  module SportDB
@@ -56,192 +74,49 @@ module SportDB
56
74
  def self.root
57
75
  "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
58
76
  end
59
-
60
- # builtin path to fixture data
61
- def self.data_path
62
- "#{root}/data"
63
- end
64
-
65
77
 
66
- def self.main
67
- Runner.new.run(ARGV)
78
+ def self.config_path
79
+ "#{root}/config"
68
80
  end
69
81
 
70
- def self.create
71
- CreateDB.up
82
+ def self.lang
83
+ # todo/fix: find a better way for single instance ??
84
+ if @lang.nil?
85
+ @lang = Lang.new
86
+ end
87
+ @lang
72
88
  end
73
89
 
74
- class Fixtures
75
- ## todo: move into its own file???
76
-
77
- ## make constants in Keys availabe (get include in Models) - do NOT pollute/include in SportDB
78
- ## make models available in sportdb module by default with namespace
79
- # e.g. lets you use Team instead of Models::Team
80
- include SportDB::Models
81
-
82
-
83
- def self.fixtures_rb_test
84
- ['leagues',
85
- 'seasons',
86
- # 'at/2011_12/bl',
87
- # 'at/2011_12/cup',
88
- # 'at/2012_13/bl',
89
- # 'at/2012_13/cup',
90
- # 'copa/sud_2012_13',
91
- # 'world/quali_2012_13_america'
92
- ]
93
- end
94
-
95
- def self.fixtures_txt_test
96
- [
97
- # [ AT_2011_12, 'at/2011_12/bl'],
98
- # [ AT_2012_13, 'at/2012_13/bl'],
99
- # [ AT_CUP_2012_13, 'at/2012_13/cup'],
100
- # ['copa.sud.2012/13', 'copa/sud_2012_13'],
101
- # [ WORLD_QUALI_AMERICA_2012_13, 'world/quali_2012_13_america']
102
- ]
103
- end
104
-
105
-
106
- def self.team_fixtures
107
- at = Country.find_by_key!( 'at' )
108
- de = Country.find_by_key!( 'de' )
109
- en = Country.find_by_key!( 'en' )
110
- es = Country.find_by_key!( 'es' )
111
- ro = Country.find_by_key!( 'ro' )
112
- mx = Country.find_by_key!( 'mx' )
113
-
114
- [
115
- [ 'america/teams', { national: true } ],
116
- [ 'euro/teams', { national: true } ],
117
- [ 'world/teams', { national: true } ],
118
- [ 'at/teams', { club: true, country_id: at.id } ],
119
- [ 'de/teams', { club: true, country_id: de.id } ],
120
- [ 'en/teams', { club: true, country_id: en.id } ],
121
- [ 'es/teams', { club: true, country_id: es.id } ],
122
- # [ 'ro/teams', { club: true, country_id: ro.id } ],
123
- [ 'mx/teams', { club: true, country_id: mx.id } ],
124
- [ 'cl/teams', { club: true } ],
125
- [ 'copa/teams', { club: true } ],
126
- [ 'nhl/teams', { club: true } ]
127
- ]
128
- end
129
-
130
- def self.fixtures_rb # all builtin ruby fixtures; helper for covenience
131
- ['leagues',
132
- 'seasons',
133
- 'at/badges',
134
- 'at/2011_12/bl',
135
- 'at/2011_12/cup',
136
- 'at/2012_13/bl',
137
- 'at/2012_13/cup',
138
- 'cl/badges',
139
- 'cl/2011_12/cl',
140
- 'cl/2011_12/el',
141
- 'cl/2012_13/cl',
142
- 'de/2012_13/bl',
143
- 'en/2012_13/pl',
144
- 'euro/2008',
145
- 'euro/2012',
146
- 'america/2011',
147
- 'copa/sud_2012_13',
148
- 'mx/apertura_2012',
149
- 'world/2010',
150
- 'world/quali_2012_13_europe',
151
- 'world/quali_2012_13_america'
152
- ]
153
- end
154
-
155
- def self.fixtures_txt
156
- [[ AT_2011_12, 'at/2011_12/bl'],
157
- [ AT_2012_13, 'at/2012_13/bl'],
158
- [ AT_CUP_2012_13, 'at/2012_13/cup'],
159
- ['de.2012/13', 'de/2012_13/bl'],
160
- ['en.2012/13', 'en/2012_13/pl'],
161
- ['america.2011', 'america/2011'],
162
- ['mx.apertura.2012', 'mx/apertura_2012'],
163
- ['copa.sud.2012/13', 'copa/sud_2012_13'],
164
- [ EURO_2008, 'euro/2008'],
165
- [ WORLD_2010, 'world/2010'],
166
- [ WORLD_QUALI_EURO_2012_13, 'world/quali_2012_13_europe_c'],
167
- [ WORLD_QUALI_AMERICA_2012_13, 'world/quali_2012_13_america']]
168
- end
169
- end # class Fixtures
170
90
 
171
- def self.team_fixtures
172
- Fixtures.team_fixtures
91
+ def self.main
92
+ ## Runner.new.run(ARGV) - old code
93
+ require 'sportdb/cli/main'
173
94
  end
174
95
 
175
- def self.fixtures_rb # all builtin ruby fixtures; helper for covenience
176
- Fixtures.fixtures_rb
177
- end
178
-
179
- def self.fixtures_txt
180
- Fixtures.fixtures_txt
96
+ def self.create
97
+ CreateDB.up
181
98
  end
182
99
 
183
- def self.load_all
184
- ## load teams first
185
- read( team_fixtures ) # converted to plain text fixtures (.rb no longer exist)
186
-
187
- load( fixtures_rb )
100
+ def self.read_setup( setup, include_path )
101
+ reader = Reader.new
102
+ reader.load_setup_with_include_path( setup, include_path )
188
103
  end
189
104
 
190
-
191
- def self.read_all
192
- ## todo/fix: remove!! roll into load_all
193
- read( fixtures_txt )
105
+ def self.read_all( include_path ) # convenience helper
106
+ read_setup( 'setups/all', include_path )
194
107
  end
195
108
 
196
- # load built-in (that is, bundled within the gem) named seeds
197
- # - pass in an array of seed names e.g. [ 'cl/teams', 'cl/2012_13/cl' ] etc.
198
-
199
- def self.load( ary )
200
- loader = Loader.new
201
- ary.each do |name|
202
- loader.load_fixtures_builtin( name )
203
- end
204
- end
205
109
 
206
110
  # load built-in (that is, bundled within the gem) named plain text seeds
207
- # - pass in an array of pairs of event/seed names e.g. [['at.2012/13', 'at/2012_13/bl'], ['cl.2012/13', 'cl/2012_13/cl']] etc.
111
+ # - pass in an array of pairs of event/seed names e.g.
112
+ # [['at.2012/13', 'at/2012_13/bl'],
113
+ # ['cl.2012/13', 'cl/2012_13/cl']] etc.
208
114
 
209
- def self.read( ary )
115
+ def self.read( ary, include_path )
210
116
  reader = Reader.new
211
- ary.each do |rec|
212
- ## todo: check for teams in name too?
213
- if rec[1].nil? || rec[1].kind_of?( Hash ) ## assume team fixtures
214
- reader.load_teams_builtin( rec[0], rec[1] ) ## NB: name goes first than opt more_values hash
215
- else
216
- reader.load_fixtures_builtin( rec[0], rec[1] ) # event_key, name -- assume game fixtures
217
- end
218
- end
117
+ reader.load_with_include_path( ary, include_path )
219
118
  end
220
-
221
119
 
222
- class Deleter
223
- ## todo: move into its own file???
224
-
225
- ## make models available in sportdb module by default with namespace
226
- # e.g. lets you use Team instead of Models::Team
227
- include SportDB::Models
228
-
229
- def run( args=[] )
230
- # for now delete all tables
231
-
232
- Team.delete_all
233
- Game.delete_all
234
- Event.delete_all
235
- EventTeam.delete_all
236
- Group.delete_all
237
- GroupTeam.delete_all
238
- Round.delete_all
239
- Badge.delete_all
240
- League.delete_all
241
- Season.delete_all
242
- end
243
-
244
- end
245
120
 
246
121
  # delete ALL records (use with care!)
247
122
  def self.delete!
@@ -250,29 +125,6 @@ module SportDB
250
125
  end # method delete!
251
126
 
252
127
 
253
- class Stats
254
- include SportDB::Models
255
-
256
- def tables
257
- puts "Stats:"
258
- puts " #{Event.count} events / #{Round.count} rounds / #{Group.count} groups"
259
- puts " #{League.count} leagues / #{Season.count} seasons"
260
- puts " #{Country.count} countries / #{Region.count} regions / #{City.count} cities"
261
- puts " #{Team.count} teams"
262
- puts " #{Game.count} games"
263
- puts " #{Badge.count} badges"
264
-
265
- ## todo: add tags / taggings from worlddb
266
- end
267
-
268
- def props
269
- puts "Props:"
270
- Prop.order( 'created_at asc' ).all.each do |prop|
271
- puts " #{prop.key} / #{prop.value} || #{prop.created_at}"
272
- end
273
- end
274
- end
275
-
276
128
  def self.stats
277
129
  stats = Stats.new
278
130
  stats.tables
@@ -289,7 +141,6 @@ module SportDB
289
141
 
290
142
 
291
143
 
292
-
293
144
  def self.load_plugins
294
145
 
295
146
  @found ||= []
data/tasks/test.rb ADDED
@@ -0,0 +1,163 @@
1
+
2
+ #########################
3
+ # Fill up sport.db w/ football.db fixtures
4
+
5
+
6
+ ##############################
7
+ ## for testing
8
+ ##
9
+ ## NB: use
10
+ # rake -I ../world.db.ruby/lib -I ../sport.db.ruby/lib update
11
+
12
+
13
+ include SportDB::Fixtures # include fixture constants like WORLD_FIXTURES, EN_FIXTURES etc.
14
+
15
+
16
+ ##########
17
+ # TODO: configure - copy to your rake file
18
+
19
+ # INCLUDE_PATH = "../football.db"
20
+
21
+ # BUILD_DIR = "./db"
22
+
23
+ # SPORT_DB_PATH = "#{BUILD_DIR}/sport.db"
24
+
25
+
26
+ ################
27
+
28
+ DB_CONFIG = {
29
+ :adapter => 'sqlite3',
30
+ :database => SPORT_DB_PATH
31
+ }
32
+
33
+ directory BUILD_DIR
34
+
35
+ # task :clean do
36
+ # rm SPORT_DB_PATH if File.exists?( SPORT_DB_PATH )
37
+ # end
38
+
39
+ task :env => BUILD_DIR do
40
+ pp DB_CONFIG
41
+ ActiveRecord::Base.establish_connection( DB_CONFIG )
42
+ end
43
+
44
+ # task :create => :env do
45
+ # WorldDB.create
46
+ # end
47
+
48
+ task :import => :env do
49
+ reader = SportDB::Reader.new
50
+
51
+ reader.load_seasons_with_include_path( 'seasons', INCLUDE_PATH )
52
+
53
+ reader.load_leagues_with_include_path( 'leagues', INCLUDE_PATH )
54
+ reader.load_leagues_with_include_path( 'leagues_club', INCLUDE_PATH, { club: true } )
55
+ end
56
+
57
+ ### club europe (cl,el)
58
+ task :club_europe => [:import] do
59
+ import_fixtures( CLUB_EUROPE_TEAMS, CLUB_EUROPE_FIXTURES )
60
+ end
61
+
62
+ ### club america
63
+ task :club_america => [:import] do
64
+ import_fixtures( CLUB_AMERICA_TEAMS, CLUB_AMERICA_FIXTURES )
65
+ end
66
+
67
+ task :europe => [:import] do
68
+ import_fixtures( EUROPE_TEAMS, EUROPE_FIXTURES )
69
+ end
70
+
71
+ task :america => [:import] do
72
+ import_fixtures( AMERICA_TEAMS, AMERICA_FIXTURES )
73
+ end
74
+
75
+ task :world => [:import] do
76
+ import_fixtures( WORLD_TEAMS, WORLD_FIXTURES )
77
+ end
78
+
79
+ ### ar - Argentina
80
+ task :ar => [:import] do
81
+ import_fixtures( AR_TEAMS, AR_FIXTURES )
82
+ end
83
+
84
+ ### br - Brasil
85
+ task :br => [:import] do
86
+ import_fixtures( BR_TEAMS, BR_FIXTURES )
87
+ end
88
+
89
+ ### mx - Mexico
90
+ task :mx => [:import] do
91
+ import_fixtures( MX_TEAMS, MX_FIXTURES )
92
+ end
93
+
94
+ #### at - Austria
95
+ task :at => [:import] do
96
+ import_fixtures( AT_TEAMS, AT_FIXTURES )
97
+ end
98
+
99
+ #### de - Deutschland/Germany
100
+ task :de => [:import] do
101
+ import_fixtures( DE_TEAMS, DE_FIXTURES )
102
+ end
103
+
104
+ #### en - England
105
+ task :en => [:import] do
106
+ import_fixtures( EN_TEAMS, EN_FIXTURES )
107
+ end
108
+
109
+ #### ro - Romania
110
+ task :ro => [:import] do
111
+ import_fixtures( RO_TEAMS, RO_FIXTURES )
112
+ end
113
+
114
+
115
+
116
+ desc 'worlddb - test loading of builtin fixtures (update)'
117
+ task :update => [:world]
118
+ # task :update => [:at, :de, :en, :ro, :ar, :br, :mx]
119
+
120
+
121
+
122
+ def import_fixtures( teams, fixtures )
123
+ reader = SportDB::Reader.new
124
+ reader.load_with_include_path( teams, INCLUDE_PATH )
125
+ reader.load_with_include_path( fixtures, INCLUDE_PATH )
126
+ end
127
+
128
+
129
+
130
+ =begin
131
+
132
+ ##################
133
+ # usage sample
134
+ ##################
135
+
136
+ #### step 1) configure tasks in test.rb in your rake file
137
+
138
+ Rakefile:
139
+
140
+ INCLUDE_PATH = "../football.db"
141
+
142
+ BUILD_DIR = "./db"
143
+
144
+ SPORT_DB_PATH = "#{BUILD_DIR}/sport.db"
145
+
146
+
147
+ #### step 2) include tasks in test.rb
148
+
149
+ SPORT_DB_RUBY_PATH = "../sport.db.ruby"
150
+ WORLD_DB_RUBY_PATH = "../world.db.ruby"
151
+
152
+ require "#{WORLD_DB_RUBY_PATH}/lib/worlddb.rb"
153
+ require "#{SPORT_DB_RUBY_PATH}/lib/sportdb.rb"
154
+
155
+ require "#{SPORT_DB_RUBY_PATH}/tasks/test.rb"
156
+
157
+ Shell:
158
+
159
+ ### step 3) call on command line
160
+
161
+ $ rake -I ../world.db.ruby/lib -I ../sport.db.ruby/lib update
162
+
163
+ =end