Module: SportDb

Defined in:
lib/sportdb.rb,
lib/sportdb.rb,
lib/sportdb/lang.rb,
lib/sportdb/stats.rb,
lib/sportdb/utils.rb,
lib/sportdb/reader.rb,
lib/sportdb/schema.rb,
lib/sportdb/deleter.rb,
lib/sportdb/matcher.rb,
lib/sportdb/updater.rb,
lib/sportdb/version.rb,
lib/sportdb/cli/opts.rb,
lib/sportdb/patterns.rb,
lib/sportdb/data/keys.rb,
lib/sportdb/utils_map.rb,
lib/sportdb/models/run.rb,
lib/sportdb/utils_date.rb,
lib/sportdb/data/models.rb,
lib/sportdb/models/game.rb,
lib/sportdb/models/goal.rb,
lib/sportdb/models/race.rb,
lib/sportdb/models/team.rb,
lib/sportdb/utils_group.rb,
lib/sportdb/utils_round.rb,
lib/sportdb/utils_teams.rb,
lib/sportdb/models/badge.rb,
lib/sportdb/models/event.rb,
lib/sportdb/models/group.rb,
lib/sportdb/models/round.rb,
lib/sportdb/models/track.rb,
lib/sportdb/models/utils.rb,
lib/sportdb/readers/game.rb,
lib/sportdb/readers/race.rb,
lib/sportdb/readers/team.rb,
lib/sportdb/utils_record.rb,
lib/sportdb/utils_scores.rb,
lib/sportdb/models/ground.rb,
lib/sportdb/models/league.rb,
lib/sportdb/models/person.rb,
lib/sportdb/models/record.rb,
lib/sportdb/models/roster.rb,
lib/sportdb/models/season.rb,
lib/sportdb/readers/event.rb,
lib/sportdb/readers/track.rb,
lib/sportdb/models/forward.rb,
lib/sportdb/readers/ground.rb,
lib/sportdb/readers/league.rb,
lib/sportdb/readers/record.rb,
lib/sportdb/readers/roster.rb,
lib/sportdb/readers/season.rb,
lib/sportdb/service/version.rb,
lib/sportdb/models/event_team.rb,
lib/sportdb/models/group_team.rb,
lib/sportdb/models/event_ground.rb

Overview

forward references

require first to resolve circular references

Defined Under Namespace

Modules: EventKeys, FixtureHelpers, Keys, Matcher, Model, Service Classes: CreateDb, Deleter, EventReader, GameReader, GroundReader, Lang, LeagueReader, Opts, RaceReader, Reader, RecordReader, RosterReader, SeasonReader, Stats, TeamReader, TrackReader, Updater

Constant Summary collapse

Models =
Model
VERSION =
'1.8.14'
TEAM_KEY_PATTERN =

about ruby regexps

try the rubular - Ruby regular expression editor and tester

-> http://rubular.com
 code -> ??  by ??

Jeff Avallone’s Regexper - Shows State-Automata Diagrams

try -> http://regexper.com
  code -> https://github.com/javallone/regexper

Regular Expressions | The Bastards Book of Ruby by Dan Nguyen

ruby.bastardsbook.com/chapters/regexes/

move to notes regex|patterns on geraldb.github.io ??

'\A[a-z]{3,}\z'
TEAM_KEY_PATTERN_MESSAGE =
"expected three or more lowercase letters a-z /#{TEAM_KEY_PATTERN}/"
TEAM_CODE_PATTERN =

must start w/ letter a-z (2 n 3 can be number or underscore _)

'\A[A-Z][A-Z0-9][A-Z0-9_]?\z'
TEAM_CODE_PATTERN_MESSAGE =
"expected two or three uppercase letters A-Z (and 0-9_; must start with A-Z) /#{TEAM_CODE_PATTERN}/"

Class Method Summary collapse

Class Method Details



112
113
114
# File 'lib/sportdb.rb', line 112

def self.banner
  "sportdb/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
end

.config_pathObject



120
121
122
# File 'lib/sportdb.rb', line 120

def self.config_path
  "#{root}/config"
end

.createObject



150
151
152
153
# File 'lib/sportdb.rb', line 150

def self.create
  CreateDb.new.up
  ConfDb::Model::Prop.create!( key: 'db.schema.sport.version', value: VERSION )
end

.data_pathObject



124
125
126
# File 'lib/sportdb.rb', line 124

def self.data_path
  "#{root}/data"
end

.delete!Object

delete ALL records (use with care!)



184
185
186
187
# File 'lib/sportdb.rb', line 184

def self.delete!
  puts '*** deleting sport table records/data...'
  Deleter.new.run
end

.langObject



133
134
135
136
137
138
139
140
141
142
# File 'lib/sportdb.rb', line 133

def self.lang
  # todo/fix: find a better way for single instance ??
  #  will get us ruby warning:  instance variable @lang not initialized   => find a better way!!!
  #   just use @lang w/o .nil?  e.g.
  #  @lang =|| Lang.new   why? why not??  or better use @@lang =|| Lang.new  for class variable!!!
   if @lang.nil?
     @lang = Lang.new
   end
   @lang
end

.load_pluginsObject



211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/sportdb.rb', line 211

def self.load_plugins

  @found  ||= []
  @loaded ||= {}
  @files  ||= Gem.find_files( 'sportdb_plugin.rb' )

  puts "#{@files.size} plugin files found:"
  @files.each do |file|
    puts "  >#{file}<"
  end
  
  ## todo: extract version and name of gem?
  puts "normalized/match pattern:"
  @files.each do |file|
    if file =~ /sportdb-([a-z]+)-(\d\.\d.\d)/
      puts "  >#{$1}< | >#{$2}<"
      @found << file
    else
      puts "*** error: ignoring plugin script >#{file}< not matching gem naming pattern"
    end
  end
  
  @found.each do |file|
    begin
      puts  "loading plugin script #{file}"
      require file
    rescue LoadError => e
      puts "*** error loading plugin script #{file.inspect}: #{e.message}. skipping..."
    end
  end

end

.mainObject



145
146
147
148
# File 'lib/sportdb.rb', line 145

def self.main
  ## Runner.new.run(ARGV) - old code
  require 'sportdb/cli/main'
end

.propsObject



205
206
207
# File 'lib/sportdb.rb', line 205

def self.props
  Stats.new.props
end

.read(ary, include_path) ⇒ Object

load built-in (that is, bundled within the gem) named plain text seeds

  • 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.
    


174
175
176
177
178
179
180
# File 'lib/sportdb.rb', line 174

def self.read( ary, include_path )
  reader = Reader.new( include_path )
  ## todo: check kind_of?( Array ) or kind_of?(String) to support array or string
  ary.each do |name|
    reader.load( name )
  end
end

.read_all(include_path) ⇒ Object

convenience helper



160
161
162
# File 'lib/sportdb.rb', line 160

def self.read_all( include_path )   # convenience helper
  read_setup( 'setups/all', include_path )
end

.read_builtinObject



164
165
166
# File 'lib/sportdb.rb', line 164

def self.read_builtin
  read_setup( 'setups/all', data_path )
end

.read_setup(setup, include_path) ⇒ Object



155
156
157
158
# File 'lib/sportdb.rb', line 155

def self.read_setup( setup, include_path )
  reader = Reader.new( include_path )
  reader.load_setup( setup )
end

.rootObject



116
117
118
# File 'lib/sportdb.rb', line 116

def self.root
  "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
end

.statsObject



195
196
197
198
199
# File 'lib/sportdb.rb', line 195

def self.stats
  stats = Stats.new
  stats.tables
  stats.props
end

.tablesObject



201
202
203
# File 'lib/sportdb.rb', line 201

def self.tables
  Stats.new.tables
end

.test_data_pathObject



128
129
130
# File 'lib/sportdb.rb', line 128

def self.test_data_path
  "#{root}/test/data"
end

.update!Object

method delete!



189
190
191
192
# File 'lib/sportdb.rb', line 189

def self.update!
  puts '*** update event fixtures...'
  Updater.new.run
end