sportdb-readers 1.2.1 → 2.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1298cb753fdadf33ad2bc2a8c756b16fc9abc06d12ba54705a9d8dc970f0fb5d
4
- data.tar.gz: 4b367725fe4e6c18d77bc822152d9da086aa713519f2d676a26ef23ee2e48714
3
+ metadata.gz: dbb28e300a9554870b241ebd71e204914caae0dcdfd299ad4fb9ce8c29b8a48e
4
+ data.tar.gz: cfd60853ca4a88aad6a652a7d1f26a8d131d9f540f16d89411a851b275b2f997
5
5
  SHA512:
6
- metadata.gz: 202056abc1d45c64ae2ce8855841b71a130e80db244d5d2b2e279b77c4f839588dee9094cdb2780d20678c36bf3e1eb3b340946f23f7e7ab48db8966238d1f5f
7
- data.tar.gz: '062494236d53dd2fa51209a520cfd0c3507a3750a802864f462b749d1188d0c13c68fa3679f1fe6839daed570589399ef34407566bb95a7d7fce038abd15d290'
6
+ metadata.gz: 7bd415167e8969b605682f74d3b420f3aae0dc6db8925f0db872a6753fdd79e593eb5dc479b3cd9a9c5d040eea81da6f274ad2739cd2116fad445cb3452ad8a8
7
+ data.tar.gz: 860bc2949679d7b5654ced5ff3c20d59e1c77ac41253d5924612669dab800560a58886b1de8b1079d591a35a55176cd0200edf72e25449b23147b58f694e3e67
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 1.2.1
1
+ ### 2.0.1
2
2
 
3
3
  ### 0.0.1 / 2019-10-29
4
4
 
data/Manifest.txt CHANGED
@@ -7,4 +7,11 @@ lib/sportdb/readers.rb
7
7
  lib/sportdb/readers/conf_reader.rb
8
8
  lib/sportdb/readers/match_reader.rb
9
9
  lib/sportdb/readers/package.rb
10
+ lib/sportdb/readers/sync/club.rb
11
+ lib/sportdb/readers/sync/country.rb
12
+ lib/sportdb/readers/sync/event.rb
13
+ lib/sportdb/readers/sync/league.rb
14
+ lib/sportdb/readers/sync/match.rb
15
+ lib/sportdb/readers/sync/more.rb
16
+ lib/sportdb/readers/sync/season.rb
10
17
  lib/sportdb/readers/version.rb
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require './lib/sportdb/readers/version.rb'
3
3
 
4
4
  Hoe.spec 'sportdb-readers' do
5
5
 
6
- self.version = SportDb::Readers::VERSION
6
+ self.version = SportDb::Module::Readers::VERSION
7
7
 
8
8
  self.summary = "sportdb-readers - sport.db readers for leagues, seasons, clubs, match schedules and results, and more"
9
9
  self.description = summary
@@ -20,7 +20,8 @@ Hoe.spec 'sportdb-readers' do
20
20
  self.licenses = ['Public Domain']
21
21
 
22
22
  self.extra_deps = [
23
- ['sportdb-sync', '>= 1.2.2'],
23
+ ['sportdb-formats', '>= 2.0.1'],
24
+ ['sportdb-models', '>= 2.1.0'],
24
25
  ]
25
26
 
26
27
  self.spec_extras = {
@@ -1,8 +1,18 @@
1
1
 
2
2
  module SportDb
3
-
4
3
  class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? why not?
5
4
 
5
+
6
+ ### fix - remove catalog reference!!!
7
+ ## use classes with "augmented" static methods
8
+ ## e.g. Club.match_by etc.
9
+ def catalog
10
+ puts "[deprecated] do NOT use catalog reference; use classes with enhanced search static methods!"
11
+ Import.catalog
12
+ end
13
+
14
+
15
+
6
16
  def self.read( path, season: nil ) ## use - rename to read_file or from_file etc. - why? why not?
7
17
  txt = File.open( path, 'r:utf-8' ) {|f| f.read }
8
18
  parse( txt, season: season )
@@ -72,10 +82,10 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
72
82
  if league.clubs? && league.intl? ## todo/fix: add intl? to ActiveRecord league!!!
73
83
 
74
84
  ## quick hack - use "dynamic" keys for keys
75
- uefa_el_q = catalog.leagues.match_by( code: 'uefa.el.quali' )[0]
76
- uefa_cl_q = catalog.leagues.match_by( code: 'uefa.cl.quali' )[0]
77
- uefa_cl = catalog.leagues.match_by( code: 'uefa.cl' )[0]
78
- uefa_el = catalog.leagues.match_by( code: 'uefa.el' )[0]
85
+ uefa_el_q = Import::League.match_by( code: 'uefa.el.quali' )[0]
86
+ uefa_cl_q = Import::League.match_by( code: 'uefa.cl.quali' )[0]
87
+ uefa_cl = Import::League.match_by( code: 'uefa.cl' )[0]
88
+ uefa_el = Import::League.match_by( code: 'uefa.el' )[0]
79
89
 
80
90
  pp [uefa_el_q, uefa_cl_q, uefa_cl, uefa_el]
81
91
 
@@ -213,10 +223,5 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
213
223
  end # method parse
214
224
 
215
225
 
216
- ######################
217
- # (convenience) helpers
218
-
219
- def catalog() Import.catalog; end
220
-
221
226
  end # class MatchReader
222
227
  end # module SportDb
@@ -0,0 +1,47 @@
1
+ module SportDb
2
+ module Sync
3
+ class Club
4
+
5
+ ## auto-cache all clubs by find_or_create for later mapping / lookup
6
+ def self.cache() @cache ||= {}; end
7
+
8
+
9
+ ##################################
10
+ # finders
11
+
12
+ def self.find_or_create( club )
13
+ ## note: assume "canonical unique" names for now for clubs
14
+ rec = Model::Team.find_by( name: club.name )
15
+ if rec.nil?
16
+
17
+ ## todo/fix: move auto-key gen to structs for re(use)!!!!!!
18
+ ## check if key is present otherwise generate e.g. remove all non-ascii a-z chars
19
+ key = club.key || club.name.downcase.gsub( /[^a-z]/, '' )
20
+ puts "add club: #{key}, #{club.name}, #{club.country.name} (#{club.country.key})"
21
+
22
+ attribs = {
23
+ key: key,
24
+ name: club.name,
25
+ country_id: Sync::Country.find_or_create( club.country ).id,
26
+ club: true,
27
+ national: false ## check -is default anyway - use - why? why not?
28
+ ## todo/fix: add city if present - why? why not?
29
+ }
30
+
31
+ attribs[:code] = club.code if club.code ## add code (abbreviation) if present
32
+
33
+ if club.alt_names.empty? == false
34
+ attribs[:alt_names] = club.alt_names.join('|')
35
+ end
36
+
37
+ rec = Model::Team.create!( attribs )
38
+ end
39
+ ## auto-add to cache
40
+ cache[club.name] = rec
41
+
42
+ rec
43
+ end
44
+
45
+ end # class Club
46
+ end # module Sync
47
+ end # module SportDb
@@ -0,0 +1,39 @@
1
+ module SportDb
2
+ module Sync
3
+ class Country
4
+
5
+ #############################
6
+ # finders
7
+
8
+ def self.find( country )
9
+ WorldDb::Model::Country.find_by( key: country.key )
10
+ end
11
+
12
+ def self.find!( country )
13
+ rec = find( country )
14
+ if rec.nil?
15
+ puts "** !!! ERROR !!! - country for key >#{country.key}< not found; sorry - add to COUNTRIES table"
16
+ exit 1
17
+ end
18
+ rec
19
+ end
20
+
21
+ def self.find_or_create( country )
22
+ rec = find( country )
23
+ if rec.nil?
24
+ attribs = {
25
+ key: country.key,
26
+ name: country.name,
27
+ code: country.code, ## fix: uses fifa code now (should be iso-alpha3 if available)
28
+ ## fifa: country.fifa,
29
+ area: 1,
30
+ pop: 1
31
+ }
32
+ rec = WorldDb::Model::Country.create!( attribs )
33
+ end
34
+ rec
35
+ end
36
+ end # class Country
37
+
38
+ end # module Sync
39
+ end # module SportDb
@@ -0,0 +1,72 @@
1
+ module SportDb
2
+ module Sync
3
+
4
+ class Event
5
+
6
+ ##################################################
7
+ # finders
8
+ def self.find_by( league:, season: )
9
+ ## note: allow passing in of activerecord db records too - why? why not?
10
+ ## fix - change ArgumentError to TypeError !! (if TypeError exists)
11
+ raise ArgumentError, "league struct record expected; got #{league.class.name}" unless league.is_a?( Import::League )
12
+ raise ArgumentError, "season struct record expected; got #{season.class.name}" unless season.is_a?( Import::Season )
13
+
14
+ ## auto-create league and season (db) records if missing? - why? why not?
15
+ season_rec = Season.find( season )
16
+ league_rec = League.find( league )
17
+
18
+ rec = nil
19
+ rec = Model::Event.find_by( league_id: league_rec.id,
20
+ season_id: season_rec.id ) if season_rec && league_rec
21
+ rec
22
+ end
23
+
24
+ def self.find_by!( league:, season: )
25
+ rec = find_by( league: league, season: season )
26
+ if rec.nil?
27
+ puts "** !!!ERROR!!! db sync - no event match found for:"
28
+ pp league
29
+ pp season
30
+ exit 1
31
+ end
32
+ rec
33
+ end
34
+
35
+ def self.find_or_create_by( league:, season: )
36
+ ## note: allow passing in of activerecord db records too - why? why not?
37
+ raise ArgumentError, "league struct record expected; got #{league.class.name}" unless league.is_a?( Import::League )
38
+ raise ArgumentError, "season struct record expected; got #{season.class.name}" unless season.is_a?( Import::Season )
39
+
40
+ ## note: auto-creates league and season (db) records if missing - why? why not?
41
+ season_rec = Season.find_or_create( season )
42
+ league_rec = League.find_or_create( league )
43
+
44
+ rec = Model::Event.find_by( league_id: league_rec.id,
45
+ season_id: season_rec.id )
46
+ if rec.nil?
47
+ attribs = {
48
+ league_id: league_rec.id,
49
+ season_id: season_rec.id,
50
+ }
51
+
52
+ ## quick hack/change later !!
53
+ ## todo/fix: check season - if is length 4 (single year) use 2017, 1, 1
54
+ ## otherwise use 2017, 7, 1
55
+ ## start_at use year and 7,1 e.g. Date.new( 2017, 7, 1 )
56
+ ## hack: fix/todo1!!
57
+ ## add "fake" start_date for now
58
+ attribs[:start_date] = if season.year? ## e.g. assume 2018 etc.
59
+ Date.new( season.start_year, 1, 1 )
60
+ else ## assume 2014/15 etc.
61
+ Date.new( season.start_year, 7, 1 )
62
+ end
63
+
64
+ rec = Model::Event.create!( attribs )
65
+ end
66
+ rec
67
+ end
68
+ end # class Event
69
+
70
+ end # module Sync
71
+ end # module SportDb
72
+
@@ -0,0 +1,40 @@
1
+ module SportDb
2
+ module Sync
3
+ class League
4
+
5
+ ###################################
6
+ # finders
7
+
8
+ def self.find( league )
9
+ Model::League.find_by( key: league.key )
10
+ end
11
+
12
+ def self.find!( league )
13
+ rec = find( league )
14
+ if rec.nil?
15
+ puts "** !!!ERROR!!! db sync - no league match found for:"
16
+ pp league
17
+ exit 1
18
+ end
19
+ rec
20
+ end
21
+
22
+ def self.find_or_create( league )
23
+ rec = find( league )
24
+ if rec.nil?
25
+ attribs = { key: league.key,
26
+ name: league.name }
27
+
28
+ if league.country
29
+ attribs[ :country_id ] = Sync::Country.find_or_create( league.country ).id
30
+ end
31
+
32
+ rec = Model::League.create!( attribs )
33
+ end
34
+ rec
35
+ end
36
+
37
+ end # class League
38
+ end # module Sync
39
+ end # module SportDb
40
+
@@ -0,0 +1,147 @@
1
+ module SportDb
2
+ module Sync
3
+
4
+ class Match
5
+ ### todo/fix: rename to create!! (add update support later) !!!!
6
+ ## use update_by_round or update_by_date or update_by_teams or such
7
+ ## NO easy (unique always auto-id match) possible!!!!!!
8
+ def self.create_or_update( match, event: )
9
+ ## note: MUST find round, thus, use bang (!)
10
+
11
+ ## todo/check: allow strings too - why? why not?
12
+
13
+
14
+ ## todo/check:
15
+ ## how to model "same" rounds in different stages
16
+ ## e.g. Belgium
17
+ ## in regular season (stage) - round 1, round 2, etc.
18
+ ## in playoff (stage) - round 1, round 2, etc.
19
+ ## reference same round or create a new one for each stage!!???
20
+ ## and lookup by name AND stage??
21
+
22
+
23
+ round_rec = if match.round
24
+ ## query for round - allow string or round rec
25
+ round_name = match.round.is_a?( String ) ? match.round : match.round.name
26
+ Model::Round.find_by!( event_id: event.id,
27
+ name: round_name )
28
+ else # note: allow matches WITHOUT rounds too (e.g. England Football League 1888 and others)
29
+ nil
30
+ end
31
+
32
+ ## todo/check: allow fallback with db lookup if NOT found in cache - why? why not?
33
+ ## or better use Sync::Team.find_or_create( team ) !!!!!!! to auto-create on first hit!
34
+ ## || Team.find_or_create( team1 ) -- note: does NOT work for string (only recs) - what to do?
35
+ ## || Model::Team.find_by!( name: team1_name )
36
+ team1_name = match.team1.is_a?( String ) ? match.team1 : match.team1.name
37
+ team1_rec = Team.cache[ team1_name ]
38
+ team2_name = match.team2.is_a?( String ) ? match.team2 : match.team2.name
39
+ team2_rec = Team.cache[ team2_name ]
40
+
41
+ ## check optional group (e.g. Group A, etc.)
42
+ group_rec = if match.group
43
+ group_name = match.group.is_a?( String ) ? match.group : match.group.name
44
+ Model::Group.find_by!( event_id: event.id,
45
+ name: group_name )
46
+ else
47
+ nil
48
+ end
49
+
50
+ ## check optional stage (e.g. Regular, Play Off, Relegation, etc. )
51
+ stage_rec = if match.stage
52
+ stage_name = match.stage.is_a?( String ) ? match.stage : match.stage.name
53
+ Model::Stage.find_by!( event_id: event.id,
54
+ name: stage_name )
55
+ else
56
+ nil
57
+ end
58
+
59
+ ### todo/check: what happens if there's more than one match? exception raised??
60
+ rec = if ['N. N.'].include?( team1_name ) && ## some special cases - always assume new record for now (to avoid ambigious update conflict)
61
+ ['N. N.'].include?( team2_name )
62
+ ## always assume new record for now
63
+ ## check for date or such - why? why not?
64
+ nil
65
+ elsif round_rec
66
+ ## add match status too? allows [abandoned] and [replay] in same round
67
+ find_attributes = { round_id: round_rec.id,
68
+ team1_id: team1_rec.id,
69
+ team2_id: team2_rec.id }
70
+
71
+ ## add stage if present to query
72
+ find_attributes[ :stage_id] = stage_rec.id if stage_rec
73
+
74
+ Model::Match.find_by( find_attributes )
75
+ else
76
+ ## always assume new record for now
77
+ ## check for date or such - why? why not?
78
+ nil
79
+ end
80
+
81
+ if rec.nil?
82
+ ## find last pos - check if it can be nil? yes, is nil if no records found
83
+ max_pos = Model::Match.where( event_id: event.id ).maximum( 'pos' )
84
+ max_pos = max_pos ? max_pos+1 : 1
85
+
86
+ attribs = { event_id: event.id, ## todo/fix: change to data struct too?
87
+ team1_id: team1_rec.id,
88
+ team2_id: team2_rec.id,
89
+ pos: max_pos,
90
+ num: match.num, ## note - might be nil (not nil for euro, world cup, etc.)
91
+ # date: match.date.to_date, ## todo/fix: split and add date & time!!!!
92
+ date: match.date, # assume iso format as string e.g. 2021-07-10 !!!
93
+ time: match.time, # assume iso format as string e.g. 21:00 !!!
94
+ score1: match.score1,
95
+ score2: match.score2,
96
+ score1i: match.score1i,
97
+ score2i: match.score2i,
98
+ score1et: match.score1et,
99
+ score2et: match.score2et,
100
+ score1p: match.score1p,
101
+ score2p: match.score2p,
102
+ status: match.status }
103
+
104
+ attribs[ :round_id ] = round_rec.id if round_rec
105
+ attribs[ :group_id ] = group_rec.id if group_rec
106
+ attribs[ :stage_id ] = stage_rec.id if stage_rec
107
+
108
+ rec = Model::Match.create!( attribs )
109
+
110
+
111
+ #############################################
112
+ ### try to update goals
113
+ #### quick & dirty v0 - redo !!!!
114
+ goals = match.goals
115
+ if goals && goals.size > 0
116
+ goals.each do |goal|
117
+ person_rec = Model::Person.find_by(
118
+ name: goal.player )
119
+ if person_rec.nil?
120
+ person_rec = Model::Person.create!(
121
+ key: goal.player.downcase.gsub( /[^a-z]/, '' ),
122
+ name: goal.player
123
+ )
124
+ end
125
+ Model::Goal.create!(
126
+ match_id: rec.id,
127
+ person_id: person_rec.id,
128
+ team_id: goal.team == 1 ? rec.team1.id
129
+ : rec.team2.id,
130
+ minute: goal.minute,
131
+ offset: goal.offset || 0,
132
+ penalty: goal.penalty,
133
+ owngoal: goal.owngoal,
134
+ )
135
+ end
136
+ end
137
+ else
138
+ # update - todo
139
+ puts "!! ERROR - match updates not yet supported (only inserts); sorry"
140
+ exit 1
141
+ end
142
+ rec
143
+ end
144
+ end # class Match
145
+
146
+ end # module Sync
147
+ end # module SportDb
@@ -0,0 +1,136 @@
1
+
2
+ module SportDb
3
+ module Sync
4
+
5
+
6
+ class NationalTeam
7
+ def self.find_or_create( team )
8
+ rec = Model::Team.find_by( name: team.name )
9
+ if rec.nil?
10
+ puts "add national team: #{team.key}, #{team.name}, #{team.country.name} (#{team.country.key})"
11
+
12
+ ### note: key expected three or more lowercase letters a-z /\A[a-z]{3,}\z/
13
+ attribs = {
14
+ key: team.key, ## note: always use downcase fifa code for now!!!
15
+ name: team.name,
16
+ code: team.code,
17
+ country_id: Sync::Country.find_or_create( team.country ).id,
18
+ club: false,
19
+ national: true ## check -is default anyway - use - why? why not?
20
+ }
21
+
22
+ if team.alt_names.empty? == false
23
+ attribs[:alt_names] = team.alt_names.join('|')
24
+ end
25
+
26
+ rec = Model::Team.create!( attribs )
27
+ end
28
+ rec
29
+ end
30
+ end # class NationalTeam
31
+
32
+
33
+ class Team
34
+ ## auto-cache all clubs by find_or_create for later mapping / lookup
35
+ def self.cache() @cache ||= {}; end
36
+
37
+ def self.find_or_create( team_or_teams )
38
+ if team_or_teams.is_a?( Array )
39
+ recs = []
40
+ teams = team_or_teams
41
+ teams.each do |team|
42
+ recs << __find_or_create( team )
43
+ end
44
+ recs
45
+ else # assome single rec
46
+ team = team_or_teams
47
+ __find_or_create( team )
48
+ end
49
+ end
50
+
51
+ def self.__find_or_create( team ) ## todo/check: use find_or_create_worker instead of _find - why? why not?
52
+ rec = if team.is_a?( Import::NationalTeam )
53
+ NationalTeam.find_or_create( team )
54
+ else ## assume Club
55
+ Club.find_or_create( team )
56
+ end
57
+ cache[ team.name ] = rec ## note: assume "canonical" unique team name
58
+ rec
59
+ end
60
+ end # class Team
61
+
62
+
63
+
64
+ class Round
65
+ def self.find_or_create( round, event: )
66
+ rec = Model::Round.find_by( name: round.name, event_id: event.id )
67
+ if rec.nil?
68
+ ## find last pos - check if it can be nil?
69
+ max_pos = Model::Round.where( event_id: event.id ).maximum( 'pos' )
70
+ max_pos = max_pos ? max_pos+1 : 1
71
+
72
+ attribs = { event_id: event.id,
73
+ name: round.name,
74
+ pos: max_pos
75
+ }
76
+
77
+ ## todo/fix: check if round has (optional) start or end date and add!!!
78
+ ## attribs[ :start_date] = round.start_date.to_date
79
+
80
+ rec = Model::Round.create!( attribs )
81
+ end
82
+ rec
83
+ end
84
+ end # class Round
85
+
86
+
87
+ class Group
88
+ def self.find_or_create( group, event: )
89
+ rec = Model::Group.find_by( name: group.name, event_id: event.id )
90
+ if rec.nil?
91
+ ## find last pos - check if it can be nil?
92
+ max_pos = Model::Group.where( event_id: event.id ).maximum( 'pos' )
93
+ max_pos = max_pos ? max_pos+1 : 1
94
+
95
+ attribs = { event_id: event.id,
96
+ name: group.name,
97
+ pos: max_pos
98
+ }
99
+
100
+ ## todo/fix: check/add optional group key (was: pos before)!!!!
101
+ rec = Model::Group.create!( attribs )
102
+ end
103
+ ## todo/fix: add/update teams in group too!!!!!
104
+ rec
105
+ end
106
+ end # class Group
107
+
108
+
109
+ class Stage
110
+ def self.find( name, event: )
111
+ Model::Stage.find_by( name: name, event_id: event.id )
112
+ end
113
+ def self.find!( name, event: )
114
+ rec = find( name, event: event )
115
+ if rec.nil?
116
+ puts "** !!!ERROR!!! db sync - no stage match found for:"
117
+ pp name
118
+ pp event
119
+ exit 1
120
+ end
121
+ rec
122
+ end
123
+
124
+ def self.find_or_create( name, event: )
125
+ rec = find( name, event: event )
126
+ if rec.nil?
127
+ attribs = { event_id: event.id,
128
+ name: name,
129
+ }
130
+ rec = Model::Stage.create!( attribs )
131
+ end
132
+ rec
133
+ end
134
+ end # class Stage
135
+ end # module Sync
136
+ end # module SportDb
@@ -0,0 +1,36 @@
1
+ module SportDb
2
+ module Sync
3
+ class Season
4
+
5
+ ################
6
+ # finders
7
+
8
+ def self.find( season )
9
+ season = Season( season ) ## auto-convert for now (for old compat) - why? why not?
10
+ Model::Season.find_by( key: season.key )
11
+ end
12
+
13
+ def self.find!( season )
14
+ season = Season( season ) ## auto-convert for now (for old compat) - why? why not?
15
+ rec = find( season )
16
+ if rec.nil?
17
+ puts "** !!!ERROR!!! db sync - no season match found for >#{season.key}<:"
18
+ exit 1
19
+ end
20
+ rec
21
+ end
22
+
23
+ def self.find_or_create( season )
24
+ season = Season( season ) ## auto-convert for now (for old compat) - why? why not?
25
+ rec = find( season )
26
+ if rec.nil?
27
+ attribs = { key: season.key,
28
+ name: season.name }
29
+ rec = Model::Season.create!( attribs )
30
+ end
31
+ rec
32
+ end
33
+ end # class Season
34
+ end # module Sync
35
+ end # module SportDb
36
+
@@ -1,10 +1,11 @@
1
1
 
2
2
 
3
3
  module SportDb
4
+ module Module
4
5
  module Readers
5
6
 
6
- MAJOR = 1 ## todo: namespace inside version or something - why? why not??
7
- MINOR = 2
7
+ MAJOR = 2 ## todo: namespace inside version or something - why? why not??
8
+ MINOR = 0
8
9
  PATCH = 1
9
10
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
11
 
@@ -21,4 +22,5 @@ module Readers
21
22
  end
22
23
 
23
24
  end # module Readers
25
+ end # module Module
24
26
  end # module SportDb
@@ -1,10 +1,21 @@
1
-
2
- require 'sportdb/sync'
1
+ require 'sportdb/formats'
2
+ require 'sportdb/models'
3
3
 
4
4
 
5
5
  ###
6
6
  # our own code
7
7
  require_relative 'readers/version' # let version always go first
8
+
9
+ ## add sync stuff
10
+ require_relative 'readers/sync/country'
11
+ require_relative 'readers/sync/league'
12
+ require_relative 'readers/sync/season'
13
+ require_relative 'readers/sync/event'
14
+ require_relative 'readers/sync/club'
15
+ require_relative 'readers/sync/more'
16
+ require_relative 'readers/sync/match' ## note - let match sync go last
17
+
18
+ ## add readers & friends
8
19
  require_relative 'readers/conf_reader'
9
20
  require_relative 'readers/match_reader'
10
21
  require_relative 'readers/package'
@@ -12,7 +23,6 @@ require_relative 'readers/package'
12
23
 
13
24
 
14
25
 
15
-
16
26
  ##
17
27
  ## add convenience shortcut helpers
18
28
  module SportDb
@@ -57,4 +67,4 @@ end # module SportDb
57
67
 
58
68
 
59
69
 
60
- puts SportDb::Readers.banner # say hello
70
+ puts SportDb::Module::Readers.banner # say hello
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-readers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-22 00:00:00.000000000 Z
11
+ date: 2024-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sportdb-sync
14
+ name: sportdb-formats
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.2
19
+ version: 2.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.2
26
+ version: 2.0.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: sportdb-models
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.1.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rdoc
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +92,13 @@ files:
78
92
  - lib/sportdb/readers/conf_reader.rb
79
93
  - lib/sportdb/readers/match_reader.rb
80
94
  - lib/sportdb/readers/package.rb
95
+ - lib/sportdb/readers/sync/club.rb
96
+ - lib/sportdb/readers/sync/country.rb
97
+ - lib/sportdb/readers/sync/event.rb
98
+ - lib/sportdb/readers/sync/league.rb
99
+ - lib/sportdb/readers/sync/match.rb
100
+ - lib/sportdb/readers/sync/more.rb
101
+ - lib/sportdb/readers/sync/season.rb
81
102
  - lib/sportdb/readers/version.rb
82
103
  homepage: https://github.com/sportdb/sport.db
83
104
  licenses: