sportdb 1.5.0 → 1.6.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.
data/Rakefile CHANGED
@@ -2,12 +2,12 @@ require 'hoe'
2
2
  require './lib/sportdb/version.rb'
3
3
 
4
4
  ## NB: plugin (hoe-manifest) not required; just used for future testing/development
5
- Hoe::plugin :manifest # more options for manifests (in the future; not yet)
5
+ ## Hoe::plugin :manifest # more options for manifests (in the future; not yet)
6
6
 
7
7
 
8
8
  Hoe.spec 'sportdb' do
9
9
 
10
- self.version = SportDB::VERSION
10
+ self.version = SportDb::VERSION
11
11
 
12
12
  self.summary = 'sportdb - sport.db command line tool'
13
13
  self.description = summary
@@ -50,4 +50,72 @@ https://groups.google.com/group/opensport
50
50
  ******************************************************************************
51
51
  EOS
52
52
 
53
- end
53
+ end
54
+
55
+
56
+ ##############################
57
+ ## for testing
58
+ ##
59
+ ## NB: use rake -I ../world.db.ruby/lib -I ./lib sportdb:build
60
+
61
+ namespace :sportdb do
62
+
63
+ BUILD_DIR = "./build"
64
+
65
+ SPORT_DB_PATH = "#{BUILD_DIR}/sport.db"
66
+
67
+ DB_CONFIG = {
68
+ :adapter => 'sqlite3',
69
+ :database => SPORT_DB_PATH
70
+ }
71
+
72
+ directory BUILD_DIR
73
+
74
+ task :clean do
75
+ rm SPORT_DB_PATH if File.exists?( SPORT_DB_PATH )
76
+ end
77
+
78
+ task :env => BUILD_DIR do
79
+ require 'worlddb' ### NB: for local testing use rake -I ./lib dev:test e.g. do NOT forget to add -I ./lib
80
+ require 'sportdb'
81
+ require 'logutils/db'
82
+
83
+ LogUtils::Logger.root.level = :info
84
+
85
+ pp DB_CONFIG
86
+ ActiveRecord::Base.establish_connection( DB_CONFIG )
87
+ end
88
+
89
+ task :create => :env do
90
+ LogDb.create
91
+ WorldDb.create
92
+ SportDb.create
93
+ end
94
+
95
+ task :importworld => :env do
96
+ WorldDb.read_setup( 'setups/sport.db.admin', '../world.db', skip_tags: true ) # populate world tables
97
+ # WorldDb.stats
98
+ end
99
+
100
+ task :importsport => :env do
101
+ SportDb.read_setup( 'setups/at', '../football.db' )
102
+ # SportDb.stats
103
+ end
104
+
105
+ task :deletesport => :env do
106
+ SportDb.delete!
107
+ end
108
+
109
+
110
+
111
+ desc 'sportdb - build from scratch'
112
+ task :build => [:clean, :create, :importworld, :importsport] do
113
+ puts 'Done.'
114
+ end
115
+
116
+ desc 'sportdb - update'
117
+ task :update => [:deletesport, :importsport] do
118
+ puts 'Done.'
119
+ end
120
+
121
+ end # namespace :sportdb
data/bin/sportdb CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'sportdb'
4
- SportDB.main
4
+ SportDb.main
@@ -19,8 +19,8 @@ require 'sportdb/cli/opts'
19
19
  LogUtils::Logger.root.level = :info # set logging level to info
20
20
 
21
21
  program :name, 'sportdb'
22
- program :version, SportDB::VERSION
23
- program :description, "sport.db command line tool, version #{SportDB::VERSION}"
22
+ program :version, SportDb::VERSION
23
+ program :description, "sport.db command line tool, version #{SportDb::VERSION}"
24
24
 
25
25
 
26
26
  # default_command :help
@@ -47,7 +47,7 @@ Further information:
47
47
 
48
48
 
49
49
  ## todo: find a better name e.g. change to settings? config? safe_opts? why? why not?
50
- myopts = SportDB::Opts.new
50
+ myopts = SportDb::Opts.new
51
51
 
52
52
  ### global option (required)
53
53
  ## todo: add check that path is valid?? possible?
@@ -62,7 +62,7 @@ global_option '-w', '--verbose', "Show debug messages"
62
62
 
63
63
 
64
64
  def connect_to_db( options )
65
- puts SportDB.banner
65
+ puts SportDb.banner
66
66
 
67
67
  puts "working directory: #{Dir.pwd}"
68
68
 
@@ -91,9 +91,9 @@ command :create do |c|
91
91
  myopts.merge_commander_options!( options.__hash__ )
92
92
  connect_to_db( myopts )
93
93
 
94
- LogDB.create
95
- WorldDB.create
96
- SportDB.create
94
+ LogDb.create
95
+ WorldDb.create
96
+ SportDb.create
97
97
  puts 'Done.'
98
98
  end # action
99
99
  end # command create
@@ -127,25 +127,25 @@ command :setup do |c|
127
127
  # delete sport first
128
128
 
129
129
  if options.delete.present?
130
- SportDB.delete! if options.sport.present?
131
- WorldDB.delete! if options.world.present?
130
+ SportDb.delete! if options.sport.present?
131
+ WorldDb.delete! if options.world.present?
132
132
  end
133
133
 
134
134
  if options.world.present?
135
- WorldDB.read_all( myopts.world_data_path )
135
+ WorldDb.read_all( myopts.world_data_path )
136
136
  end
137
137
 
138
138
  if options.sport.present?
139
- SportDB.read_setup( "setups/#{setup}", myopts.data_path )
139
+ SportDb.read_setup( "setups/#{setup}", myopts.data_path )
140
140
  end
141
141
 
142
142
  else # assume "plain" regular setup
143
- LogDB.create
144
- WorldDB.create
145
- SportDB.create
143
+ LogDb.create
144
+ WorldDb.create
145
+ SportDb.create
146
146
 
147
- WorldDB.read_all( myopts.world_data_path )
148
- SportDB.read_setup( "setups/#{setup}", myopts.data_path )
147
+ WorldDb.read_all( myopts.world_data_path )
148
+ SportDb.read_setup( "setups/#{setup}", myopts.data_path )
149
149
  end
150
150
  puts 'Done.'
151
151
  end # action
@@ -167,21 +167,21 @@ command :load do |c|
167
167
  myopts.merge_commander_options!( options.__hash__ )
168
168
  connect_to_db( myopts )
169
169
 
170
- SportDB.delete! if options.delete.present?
170
+ SportDb.delete! if options.delete.present?
171
171
 
172
- reader = SportDB::Reader.new
172
+ reader = SportDb::Reader.new( myopts.data_path )
173
173
 
174
174
  args.each do |arg|
175
175
  name = arg # File.basename( arg, '.*' )
176
176
 
177
177
  if myopts.event.present?
178
178
  ## fix: rename to load_event_fixtures_w... or similar
179
- reader.load_fixtures( myopts.event, name, myopts.data_path )
179
+ reader.load_fixtures( myopts.event, name )
180
180
  else
181
181
  ## fix> add a convenience method for loading single fixture
182
182
  ary = []
183
183
  ary << name
184
- reader.load( ary, myopts.data_path )
184
+ reader.load( ary )
185
185
  end
186
186
  end # each arg
187
187
 
@@ -201,7 +201,7 @@ command :logs do |c|
201
201
  myopts.merge_commander_options!( options.__hash__ )
202
202
  connect_to_db( myopts )
203
203
 
204
- LogDB::Models::Log.all.each do |log|
204
+ LogDb::Models::Log.all.each do |log|
205
205
  puts "[#{log.level}] -- #{log.msg}"
206
206
  end
207
207
 
@@ -221,7 +221,7 @@ command :stats do |c|
221
221
  myopts.merge_commander_options!( options.__hash__ )
222
222
  connect_to_db( myopts )
223
223
 
224
- SportDB.tables
224
+ SportDb.tables
225
225
 
226
226
  puts 'Done.'
227
227
  end
@@ -239,7 +239,7 @@ command :props do |c|
239
239
  myopts.merge_commander_options!( options.__hash__ )
240
240
  connect_to_db( myopts )
241
241
 
242
- SportDB.props
242
+ SportDb.props
243
243
 
244
244
  puts 'Done.'
245
245
  end
@@ -1,4 +1,4 @@
1
- module SportDB
1
+ module SportDb
2
2
 
3
3
  class Opts
4
4
 
@@ -45,4 +45,4 @@ class Opts
45
45
 
46
46
  end # class Opts
47
47
 
48
- end # module SportDB
48
+ end # module SportDb
@@ -14,21 +14,21 @@ require 'yaml'
14
14
 
15
15
  ## shortcuts for models
16
16
 
17
- Event = SportDB::Models::Event
18
- Team = SportDB::Models::Team
19
- Game = SportDB::Models::Game
20
- Group = SportDB::Models::Group
21
- Round = SportDB::Models::Round
22
- Season = SportDB::Models::Season
23
- League = SportDB::Models::League
24
- Badge = SportDB::Models::Badge
25
-
26
- Tag = WorldDB::Models::Tag
27
- Tagging = WorldDB::Models::Tagging
28
- Country = WorldDB::Models::Country
29
- Region = WorldDB::Models::Region
30
- City = WorldDB::Models::City
31
- Prop = WorldDB::Models::Prop
17
+ Event = SportDb::Models::Event
18
+ Team = SportDb::Models::Team
19
+ Game = SportDb::Models::Game
20
+ Group = SportDb::Models::Group
21
+ Round = SportDb::Models::Round
22
+ Season = SportDb::Models::Season
23
+ League = SportDb::Models::League
24
+ Badge = SportDb::Models::Badge
25
+
26
+ Tag = WorldDb::Models::Tag
27
+ Tagging = WorldDb::Models::Tagging
28
+ Country = WorldDb::Models::Country
29
+ Region = WorldDb::Models::Region
30
+ City = WorldDb::Models::City
31
+ Prop = WorldDb::Models::Prop
32
32
 
33
33
  ## connect to db
34
34
 
@@ -42,7 +42,7 @@ ActiveRecord::Base.establish_connection( DB_CONFIG )
42
42
 
43
43
  ## test drive
44
44
 
45
- puts "Welcome to sport.db, version #{SportDB::VERSION} (world.db, version #{WorldDB::VERSION})!"
45
+ puts "Welcome to sport.db, version #{SportDb::VERSION} (world.db, version #{WorldDb::VERSION})!"
46
46
  puts " #{'%5d' % Event.count} events"
47
47
  puts " #{'%5d' % Team.count} teams"
48
48
  puts " #{'%5d' % Game.count} games"
@@ -43,7 +43,7 @@ end
43
43
 
44
44
 
45
45
 
46
- module SportDB
46
+ module SportDb
47
47
 
48
48
  module Fixtures # use shortcut/alias Fx?
49
49
 
@@ -202,4 +202,4 @@ module SportDB
202
202
 
203
203
  end # module Fixtures
204
204
 
205
- end # module SportDB
205
+ end # module SportDb
@@ -5,7 +5,7 @@
5
5
 
6
6
  ### fix: rename to ::Key (singular) - why? why not??
7
7
 
8
- module SportDB::Keys
8
+ module SportDb::Keys
9
9
 
10
10
  module EventKeys
11
11
  # use constants for known keys; lets us define aliases (if things change)
@@ -29,6 +29,6 @@ module SportDB::Keys
29
29
  ## NB: see db/leagues.rb for keys in use
30
30
  end
31
31
 
32
- include SportDB::Keys::EventKeys
32
+ include SportDb::Keys::EventKeys
33
33
 
34
- end # module SportDB::Keys
34
+ end # module SportDb::Keys
@@ -1,12 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
- module SportDB::Models
3
+ module SportDb::Models
4
4
 
5
5
  ## add convenience finders to some model classes
6
6
 
7
7
  class Event
8
8
 
9
- include SportDB::Keys::EventKeys
9
+ include SportDb::Keys::EventKeys
10
10
 
11
11
  def self.find_at_2012_13!
12
12
  self.find_by_key!( AT_2012_13 )
@@ -38,6 +38,6 @@ module SportDB::Models
38
38
 
39
39
  end # class Event
40
40
 
41
- end # module SportDB::Models
41
+ end # module SportDb::Models
42
42
 
43
43
 
@@ -1,11 +1,11 @@
1
1
 
2
- module SportDB
2
+ module SportDb
3
3
 
4
4
  class Deleter
5
5
  ######
6
6
  # NB: make models available in sportdb module by default with namespace
7
7
  # e.g. lets you use Team instead of Models::Team
8
- include SportDB::Models
8
+ include SportDb::Models
9
9
 
10
10
  def run
11
11
  # for now delete all tables
@@ -24,4 +24,4 @@ module SportDB
24
24
 
25
25
  end # class Deleter
26
26
 
27
- end # module SportDB
27
+ end # module SportDb
data/lib/sportdb/lang.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- module SportDB
3
+ module SportDb
4
4
 
5
5
  class Lang
6
6
 
@@ -267,4 +267,4 @@ private
267
267
  end # class LangChecker
268
268
 
269
269
 
270
- end # module SportDB
270
+ end # module SportDb
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
  class Badge < ActiveRecord::Base
4
4
 
@@ -9,4 +9,4 @@ class Badge < ActiveRecord::Base
9
9
  end # class Badge
10
10
 
11
11
 
12
- end # module SportDB::Models
12
+ end # module SportDb::Models
@@ -1,14 +1,14 @@
1
1
 
2
2
  ## todo: how to best extends city model?
3
3
 
4
- module WorldDB::Models
4
+ module WorldDb::Models
5
5
  class City
6
- has_many :teams, :class_name => 'SportDB::Models::Team', :foreign_key => 'city_id'
6
+ has_many :teams, :class_name => 'SportDb::Models::Team', :foreign_key => 'city_id'
7
7
  end
8
- end # module WorldDB::Models
8
+ end # module WorldDb::Models
9
9
 
10
10
 
11
11
  ## moved to models/forward
12
- # module SportDB::Models
13
- # City = WorldDB::Models::City
14
- # end # module SportDB::Models
12
+ # module SportDb::Models
13
+ # City = WorldDb::Models::City
14
+ # end # module SportDb::Models
@@ -2,17 +2,17 @@
2
2
 
3
3
  ## todo: how to best extends country model?
4
4
 
5
- module WorldDB::Models
5
+ module WorldDb::Models
6
6
 
7
7
  class Country
8
- has_many :teams, :class_name => 'SportDB::Models::Team', :foreign_key => 'country_id'
9
- has_many :leagues, :class_name => 'SportDB::Models::League', :foreign_key => 'country_id'
8
+ has_many :teams, :class_name => 'SportDb::Models::Team', :foreign_key => 'country_id'
9
+ has_many :leagues, :class_name => 'SportDb::Models::League', :foreign_key => 'country_id'
10
10
  end # class Country
11
11
 
12
- end # module WorldDB::Models
12
+ end # module WorldDb::Models
13
13
 
14
14
 
15
15
  ## moved to models/forward
16
- # module SportDB::Models
17
- # Country = WorldDB::Models::Country
18
- # end # module SportDB::Models
16
+ # module SportDb::Models
17
+ # Country = WorldDb::Models::Country
18
+ # end # module SportDb::Models
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- module SportDB::Models
3
+ module SportDb::Models
4
4
 
5
5
  class Event < ActiveRecord::Base
6
6
 
@@ -79,4 +79,4 @@ class Event < ActiveRecord::Base
79
79
 
80
80
  end # class Event
81
81
 
82
- end # module SportDB::Models
82
+ end # module SportDb::Models
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class EventTeam < ActiveRecord::Base
@@ -9,4 +9,4 @@ class EventTeam < ActiveRecord::Base
9
9
  end # class EventTeam
10
10
 
11
11
 
12
- end # module SportDB::Models
12
+ end # module SportDb::Models
@@ -2,14 +2,14 @@
2
2
  ### forward references
3
3
  ## require first to resolve circular references
4
4
 
5
- module SportDB::Models
5
+ module SportDb::Models
6
6
 
7
- ## todo: why? why not use include WorldDB::Models here???
7
+ ## todo: why? why not use include WorldDb::Models here???
8
8
 
9
- Country = WorldDB::Models::Country
10
- Region = WorldDB::Models::Region
11
- City = WorldDB::Models::City
12
- Prop = WorldDB::Models::Prop
9
+ Country = WorldDb::Models::Country
10
+ Region = WorldDb::Models::Region
11
+ City = WorldDb::Models::City
12
+ Prop = WorldDb::Models::Prop
13
13
 
14
14
  ## nb: for now only team and league use worlddb tables
15
15
  # e.g. with belongs_to assoc (country,region)
@@ -20,12 +20,12 @@ module SportDB::Models
20
20
  end
21
21
 
22
22
 
23
- module WorldDB::Models
23
+ module WorldDb::Models
24
24
 
25
25
  # add alias? why? why not? # is there a better way?
26
26
  # - just include SportDB::Models - why? why not?
27
27
  # - just include once in loader??
28
- Team = SportDB::Models::Team
29
- League = SportDB::Models::League
28
+ Team = SportDb::Models::Team
29
+ League = SportDb::Models::League
30
30
 
31
31
  end
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class Game < ActiveRecord::Base
@@ -11,6 +11,41 @@ class Game < ActiveRecord::Base
11
11
 
12
12
  before_save :calc_toto12x
13
13
 
14
+ ### getter/setters for deprecated attribs (score3,4,5,6) n national
15
+
16
+ def score3
17
+ score1ot
18
+ end
19
+
20
+ def score4
21
+ score2ot
22
+ end
23
+
24
+ def score5
25
+ score1p
26
+ end
27
+
28
+ def score6
29
+ score2p
30
+ end
31
+
32
+ def score3=(value)
33
+ self.score1ot = value
34
+ end
35
+
36
+ def score4=(value)
37
+ self.score2ot = value
38
+ end
39
+
40
+ def score5=(value)
41
+ self.score1p = value
42
+ end
43
+
44
+ def score6=(value)
45
+ self.score2p = value
46
+ end
47
+
48
+
14
49
 
15
50
  def self.create_knockouts_from_ary!( games, round )
16
51
  Game.create_from_ary!( games, round, true )
@@ -58,10 +93,10 @@ class Game < ActiveRecord::Base
58
93
  :team1 => value_teams[0],
59
94
  :score1 => value_scores[0],
60
95
  :score2 => value_scores[1],
61
- :score3 => value_scores[2],
62
- :score4 => value_scores[3],
63
- :score5 => value_scores[4],
64
- :score6 => value_scores[5],
96
+ :score1ot => value_scores[2],
97
+ :score2ot => value_scores[3],
98
+ :score1p => value_scores[4],
99
+ :score2p => value_scores[5],
65
100
  :team2 => value_teams[1],
66
101
  :play_at => value_play_at,
67
102
  :group => value_group, # Note: group is optional (may be null/nil)
@@ -122,10 +157,10 @@ class Game < ActiveRecord::Base
122
157
  :team1 =>pair[1][1],
123
158
  :score1 =>pair[1][2][0],
124
159
  :score2 =>pair[1][2][1],
125
- :score3 =>pair[1][2][2],
126
- :score4 =>pair[1][2][3],
127
- :score5 =>pair[1][2][4],
128
- :score6 =>pair[1][2][5],
160
+ :score1ot =>pair[1][2][2],
161
+ :score2ot =>pair[1][2][3],
162
+ :score1p =>pair[1][2][4],
163
+ :score1p =>pair[1][2][5],
129
164
  :team2 =>pair[1][3],
130
165
  :play_at =>pair[1][4],
131
166
  :knockout =>true }
@@ -194,4 +229,4 @@ class Game < ActiveRecord::Base
194
229
  end # class Game
195
230
 
196
231
 
197
- end # module SportDB::Models
232
+ end # module SportDb::Models
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class Group < ActiveRecord::Base
@@ -19,5 +19,5 @@ class Group < ActiveRecord::Base
19
19
  end # class Group
20
20
 
21
21
 
22
- end # module SportDB::Models
22
+ end # module SportDb::Models
23
23
 
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class GroupTeam < ActiveRecord::Base
@@ -9,5 +9,5 @@ class GroupTeam < ActiveRecord::Base
9
9
  end # class GroupTeam
10
10
 
11
11
 
12
- end # module SportDB::Models
12
+ end # module SportDb::Models
13
13
 
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class League < ActiveRecord::Base
@@ -10,7 +10,7 @@ class League < ActiveRecord::Base
10
10
  has_many :events
11
11
  has_many :seasons, :through => :events
12
12
 
13
- belongs_to :country, :class_name => 'WorldDB::Models::Country', :foreign_key => 'country_id'
13
+ belongs_to :country, :class_name => 'WorldDb::Models::Country', :foreign_key => 'country_id'
14
14
 
15
15
 
16
16
  def self.create_from_ary!( leagues, more_values={} )
@@ -40,4 +40,4 @@ class League < ActiveRecord::Base
40
40
  end # class League
41
41
 
42
42
 
43
- end # module SportDB::Models
43
+ end # module SportDb::Models
@@ -2,6 +2,6 @@
2
2
 
3
3
 
4
4
  ## moved to models/forward
5
- # module SportDB::Models
6
- # Prop = WorldDB::Models::Prop
7
- # end # module SportDB::Models
5
+ # module SportDb::Models
6
+ # Prop = WorldDb::Models::Prop
7
+ # end # module SportDb::Models
@@ -2,15 +2,15 @@
2
2
 
3
3
  ## todo: how to best extends country model?
4
4
 
5
- module WorldDB::Models
5
+ module WorldDb::Models
6
6
 
7
7
  class Region
8
- has_many :teams, :class_name => 'SportDB::Models::Team', :through => :cities
8
+ has_many :teams, :class_name => 'SportDb::Models::Team', :through => :cities
9
9
  end # class Region
10
10
 
11
- end # module WorldDB::Models
11
+ end # module WorldDb::Models
12
12
 
13
13
  ## moved to models/forward
14
- # module SportDB::Models
15
- # Region = WorldDB::Models::Region
16
- # end # module SportDB::Models
14
+ # module SportDb::Models
15
+ # Region = WorldDb::Models::Region
16
+ # end # module SportDb::Models
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class Round < ActiveRecord::Base
@@ -9,5 +9,5 @@ class Round < ActiveRecord::Base
9
9
  end # class Round
10
10
 
11
11
 
12
- end # module SportDB::Models
12
+ end # module SportDb::Models
13
13
 
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class Season < ActiveRecord::Base
@@ -8,4 +8,4 @@ class Season < ActiveRecord::Base
8
8
  end # class Season
9
9
 
10
10
 
11
- end # module SportDB::Models
11
+ end # module SportDb::Models
@@ -1,4 +1,4 @@
1
- module SportDB::Models
1
+ module SportDb::Models
2
2
 
3
3
 
4
4
  class Team < ActiveRecord::Base
@@ -76,4 +76,4 @@ class Team < ActiveRecord::Base
76
76
  end # class Team
77
77
 
78
78
 
79
- end # module SportDB::Models
79
+ end # module SportDb::Models
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- module SportDB
3
+ module SportDb
4
4
 
5
5
  class Reader
6
6
 
@@ -11,17 +11,20 @@ class Reader
11
11
  include SportDB::Models
12
12
 
13
13
 
14
- def initialize
14
+ attr_reader :include_path
15
+
16
+ def initialize( include_path, opts={})
17
+ @include_path = include_path
15
18
  end
16
19
 
17
- def load_setup( setup, include_path )
18
- ary = load_fixture_setup( setup, include_path )
19
- load( ary, include_path )
20
+ def load_setup( setup )
21
+ ary = load_fixture_setup( setup )
22
+ load( ary )
20
23
  end # method load_setup
21
24
 
22
25
 
23
26
  ## fix/todo: rename ??
24
- def load_fixture_setup( name, include_path )
27
+ def load_fixture_setup( name )
25
28
 
26
29
  ## todo/fix: cleanup quick and dirty code
27
30
 
@@ -70,7 +73,7 @@ class Reader
70
73
  end # load_fixture_setup
71
74
 
72
75
 
73
- def load( ary, include_path ) # convenience helper for all-in-one reader
76
+ def load( ary ) # convenience helper for all-in-one reader
74
77
 
75
78
  logger.debug "enter load(include_path=>>#{include_path}<<):"
76
79
  logger.debug ary.to_json
@@ -81,30 +84,30 @@ class Reader
81
84
  name = rec
82
85
 
83
86
  if name =~ /^seasons/
84
- load_seasons( name, include_path )
87
+ load_seasons( name )
85
88
  elsif name =~ /^leagues/
86
89
  if name =~ /club/
87
90
  # e.g. leagues_club
88
- load_leagues( name, include_path, { club: true } )
91
+ load_leagues( name, club: true )
89
92
  else
90
93
  # e.g. leagues
91
- load_leagues( name, include_path )
94
+ load_leagues( name )
92
95
  end
93
96
  elsif name =~ /^([a-z]{2})\/teams/
94
97
  # auto-add country code (from folder structure) for country-specific teams
95
98
  # e.g. at/teams at/teams2 de/teams etc.
96
99
  country_key = $1
97
100
  country = Country.find_by_key!( country_key )
98
- load_teams( name, include_path, { club: true, country_id: country.id } )
101
+ load_teams( name, club: true, country_id: country.id )
99
102
  elsif name =~ /\/teams/
100
103
  if name =~ /club/
101
104
  # club teams (many countries)
102
105
  # e.g. club/europe/teams
103
- load_teams( name, include_path, { club: true } )
106
+ load_teams( name, club: true )
104
107
  else
105
108
  # assume national teams
106
109
  # e.g. world/teams amercia/teams_n
107
- load_teams( name, include_path, { national: true } )
110
+ load_teams( name, national: true )
108
111
  end
109
112
  else
110
113
  logger.error "unknown sportdb fixture type >#{name}<"
@@ -119,9 +122,9 @@ class Reader
119
122
  event_name = rec[1] # e.g. at/2012_13/bl
120
123
  fixture_names = rec[1..-1] # e.g. at/2012_13/bl, at/2012_13/bl2
121
124
 
122
- load_event( event_name, include_path )
125
+ load_event( event_name )
123
126
  fixture_names.each do |fixture_name|
124
- load_fixtures( event_key, fixture_name, include_path )
127
+ load_fixtures( event_key, fixture_name )
125
128
  end
126
129
  end
127
130
 
@@ -129,7 +132,7 @@ class Reader
129
132
  end # method load
130
133
 
131
134
 
132
- def load_leagues( name, include_path, more_values={} )
135
+ def load_leagues( name, more_values={} )
133
136
 
134
137
  path = "#{include_path}/#{name}.txt"
135
138
 
@@ -144,7 +147,7 @@ class Reader
144
147
  end # load_leagues
145
148
 
146
149
 
147
- def load_seasons( name, include_path )
150
+ def load_seasons( name )
148
151
  path = "#{include_path}/#{name}.yml"
149
152
 
150
153
  puts "*** parsing data '#{name}' (#{path})..."
@@ -193,7 +196,7 @@ class Reader
193
196
 
194
197
 
195
198
 
196
- def load_event( name, include_path )
199
+ def load_event( name )
197
200
  path = "#{include_path}/#{name}.yml"
198
201
 
199
202
  logger.info "parsing data '#{name}' (#{path})..."
@@ -291,7 +294,7 @@ class Reader
291
294
  ### Prop.create!( key: "db.#{fixture_name_to_prop_key(name)}.version", value: "file.txt.#{File.mtime(path).strftime('%Y.%m.%d')}" )
292
295
  end
293
296
 
294
- def load_fixtures( event_key, name, include_path ) # load from file system
297
+ def load_fixtures( event_key, name ) # load from file system
295
298
 
296
299
  path = "#{include_path}/#{name}.txt"
297
300
 
@@ -307,7 +310,7 @@ class Reader
307
310
  end
308
311
 
309
312
 
310
- def load_teams( name, include_path, more_values={} )
313
+ def load_teams( name, more_values={} )
311
314
  path = "#{include_path}/#{name}.txt"
312
315
 
313
316
  puts "*** parsing data '#{name}' (#{path})..."
@@ -540,10 +543,10 @@ private
540
543
  game_attribs = {
541
544
  score1: scores[0],
542
545
  score2: scores[1],
543
- score3: scores[2],
544
- score4: scores[3],
545
- score5: scores[4],
546
- score6: scores[5],
546
+ score1ot: scores[2],
547
+ score2ot: scores[3],
548
+ score1p: scores[4],
549
+ score2p: scores[5],
547
550
  play_at: date,
548
551
  knockout: @knockout_flag,
549
552
  group_id: @group.present? ? @group.id : nil
@@ -614,4 +617,4 @@ private
614
617
 
615
618
 
616
619
  end # class Reader
617
- end # module SportDB
620
+ end # module SportDb
@@ -1,18 +1,9 @@
1
1
 
2
- module SportDB
2
+ module SportDb
3
3
 
4
- class CreateDB ## fix/todo: change to ActiveRecord::Migration why? why not?
5
-
6
-
7
- ## make models available in sportdb module by default with namespace
8
- # e.g. lets you use Team instead of Models::Team
9
- include SportDB::Models
10
-
11
-
12
- def self.up
13
-
14
- ActiveRecord::Schema.define do
4
+ class CreateDb < ActiveRecord::Migration
15
5
 
6
+ def up
16
7
 
17
8
  create_table :teams do |t|
18
9
  t.string :title, :null => false
@@ -23,6 +14,8 @@ create_table :teams do |t|
23
14
  t.references :country, :null => false
24
15
  t.references :city # NB: city is optional (should be required for clubs e.g. non-national teams)
25
16
  t.boolean :club, :null => false, :default => false # is it a club (not a national team)?
17
+
18
+ ### fix: remove and add virtual attribute in model instead
26
19
  t.boolean :national, :null => false, :default => false # is it a national selection team (not a club)?
27
20
  t.timestamps
28
21
  end
@@ -34,8 +27,8 @@ create_table :events do |t|
34
27
  t.string :key, :null => false # import/export key
35
28
  t.references :league, :null => false
36
29
  t.references :season, :null => false
37
- t.datetime :start_at, :null => false
38
- t.datetime :end_at # make it required???
30
+ t.date :start_at, :null => false # NB: only use date (w/o time)
31
+ t.date :end_at # make it required??? # NB: only use date (w/o time)
39
32
  t.boolean :team3, :null => false, :default => true ## e.g. Champions League has no 3rd place (only 1st and 2nd/final)
40
33
  t.timestamps
41
34
  end
@@ -51,8 +44,8 @@ create_table :rounds do |t|
51
44
  ## add new table stage/stages for grouping rounds in group rounds and playoff rounds, for example???
52
45
  ## # "regular" season (group) games or post-season (playoff) knockouts (k.o's)
53
46
  t.boolean :knockout, :null => false, :default => false
54
- t.datetime :start_at, :null => false
55
- t.datetime :end_at # todo: make it required e.g. :null => false
47
+ t.date :start_at, :null => false # NB: only use date (w/o time)
48
+ t.date :end_at # todo: make it required e.g. :null => false # NB: only use date (w/o time)
56
49
  t.timestamps
57
50
  end
58
51
 
@@ -96,11 +89,6 @@ create_table :games do |t|
96
89
  t.string :toto12x # 1,2,X,nil calculate on save
97
90
  t.string :key # import/export key
98
91
 
99
- t.integer :score3 # deprecated - remove todo: change to score1o or score1o overtime # verlaengerung (opt)
100
- t.integer :score4 # deprecated - remove todo> change to score2o
101
- t.integer :score5 # deprecated - remove elfmeter (opt) ## todo> change to score1p - penality
102
- t.integer :score6 # deprecated - remove
103
-
104
92
  t.timestamps
105
93
  end
106
94
 
@@ -161,14 +149,14 @@ create_table :badges do |t|
161
149
  t.string :title, :null => false # Meister, Weltmeister, Europameister, Cupsieger, Vize-Meister, Aufsteiger, Absteiger, etc.
162
150
  t.timestamps
163
151
  end
164
-
165
- end # block Schema.define
166
152
 
153
+ end # method up
167
154
 
168
- Prop.create!( key: 'db.schema.sport.version', value: SportDB::VERSION )
155
+ def down
156
+ raise ActiveRecord::IrreversibleMigration
157
+ end
169
158
 
170
- end # method up
171
159
 
172
- end # class CreateDB
160
+ end # class CreateDb
173
161
 
174
- end # module SportDB
162
+ end # module SportDb
data/lib/sportdb/stats.rb CHANGED
@@ -1,8 +1,8 @@
1
1
 
2
- module SportDB
2
+ module SportDb
3
3
 
4
4
  class Stats
5
- include SportDB::Models
5
+ include SportDb::Models
6
6
 
7
7
  def tables
8
8
  puts "Stats:"
@@ -25,4 +25,4 @@ module SportDB
25
25
 
26
26
  end # class Stats
27
27
 
28
- end # module SportDB
28
+ end # module SportDb
data/lib/sportdb/utils.rb CHANGED
@@ -3,25 +3,25 @@
3
3
  ### some utils moved to worldbdb/utils for reuse
4
4
 
5
5
 
6
- module SportDB::FixtureHelpers
6
+ module SportDb::FixtureHelpers
7
7
 
8
8
  def is_round?( line )
9
- line =~ SportDB.lang.regex_round
9
+ line =~ SportDb.lang.regex_round
10
10
  end
11
11
 
12
12
  def is_group?( line )
13
13
  # NB: check after is_round? (round may contain group reference!)
14
- line =~ SportDB.lang.regex_group
14
+ line =~ SportDb.lang.regex_group
15
15
  end
16
16
 
17
17
  def is_knockout_round?( line )
18
18
 
19
19
  ## todo: check for adding ignore case for regex (e.g. 1st leg/1st Leg)
20
20
 
21
- if line =~ SportDB.lang.regex_leg1
21
+ if line =~ SportDb.lang.regex_leg1
22
22
  logger.debug " two leg knockout; skip knockout flag on first leg"
23
23
  false
24
- elsif line =~ SportDB.lang.regex_knockout_round
24
+ elsif line =~ SportDb.lang.regex_knockout_round
25
25
  logger.debug " setting knockout flag to true"
26
26
  true
27
27
  elsif line =~ /K\.O\.|K\.o\.|Knockout/
@@ -328,4 +328,4 @@ module SportDB::FixtureHelpers
328
328
  end # method translate_teams!
329
329
 
330
330
 
331
- end # module SportDB::FixtureHelpers
331
+ end # module SportDb::FixtureHelpers
@@ -1,4 +1,9 @@
1
1
 
2
- module SportDB
3
- VERSION = '1.5.0'
2
+ module SportDb
3
+ VERSION = '1.6.0'
4
4
  end
5
+
6
+ ###########################################
7
+ ## fix: remove old alias for SportDb
8
+
9
+ SportDB = SportDb
data/lib/sportdb.rb CHANGED
@@ -94,12 +94,13 @@ module SportDB
94
94
  end
95
95
 
96
96
  def self.create
97
- CreateDB.up
97
+ CreateDb.new.up
98
+ WorldDb::Models::Prop.create!( key: 'db.schema.sport.version', value: VERSION )
98
99
  end
99
100
 
100
101
  def self.read_setup( setup, include_path )
101
- reader = Reader.new
102
- reader.load_setup( setup, include_path )
102
+ reader = Reader.new( include_path )
103
+ reader.load_setup( setup )
103
104
  end
104
105
 
105
106
  def self.read_all( include_path ) # convenience helper
@@ -113,11 +114,11 @@ module SportDB
113
114
  # ['cl.2012/13', 'cl/2012_13/cl']] etc.
114
115
 
115
116
  def self.read( ary, include_path )
116
- reader = Reader.new
117
- reader.load( ary, include_path )
117
+ reader = Reader.new( include_path )
118
+ reader.load( ary )
118
119
  end
119
-
120
-
120
+
121
+
121
122
  # delete ALL records (use with care!)
122
123
  def self.delete!
123
124
  puts '*** deleting sport table records/data...'
@@ -174,15 +175,15 @@ module SportDB
174
175
 
175
176
  end
176
177
 
177
- end # module SportDB
178
+ end # module SportDb
178
179
 
179
180
 
180
- ## SportDB::load_plugins
181
+ ## SportDb::load_plugins
181
182
 
182
183
 
183
184
  if __FILE__ == $0
184
- SportDB.main
185
+ SportDb.main
185
186
  else
186
187
  ## say hello
187
- puts SportDB.banner
188
+ puts SportDb.banner
188
189
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
12
+ date: 2013-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: worlddb
16
- requirement: &79472040 !ruby/object:Gem::Requirement
16
+ requirement: &81812490 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.5.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *79472040
24
+ version_requirements: *81812490
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: commander
27
- requirement: &79471820 !ruby/object:Gem::Requirement
27
+ requirement: &81812230 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 4.1.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *79471820
35
+ version_requirements: *81812230
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &79471600 !ruby/object:Gem::Requirement
38
+ requirement: &81811960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.10'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *79471600
46
+ version_requirements: *81811960
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hoe
49
- requirement: &79471380 !ruby/object:Gem::Requirement
49
+ requirement: &81811710 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '3.3'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *79471380
57
+ version_requirements: *81811710
58
58
  description: sportdb - sport.db command line tool
59
59
  email: opensport@googlegroups.com
60
60
  executables: