sportdb-readers 0.3.7 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b82ac613158881351d512a4ffc9e7d15f34b133
4
- data.tar.gz: 52251959f919b175feec37cadcc51e56c70e5037
3
+ metadata.gz: 34f6b00e00c0ff63899b32ef86eefd077d54315a
4
+ data.tar.gz: 6da90ea9439ed32f442fb148ce79d3184bfa7e32
5
5
  SHA512:
6
- metadata.gz: 32c7921845dd7db5c2771a5941ab7ca0b27839eb88c80d71703354f6f533ca1c2eb99b47671e2462cbddcddb443fab3d0e115a4991f3d6155185a081d500796e
7
- data.tar.gz: 072a747031829fb495773946c13ec6a43627c7b6de4b21b752c40eb2d1962c1fb3a047982fe83f1257be0b9be3f9115d0eed0d798de1b3dae2f93518e2ac02d3
6
+ metadata.gz: 8ea4888386c7ae6c371d5145728a04516de88d6aa3d392feb1a141301215fd0268338e944415137ea7ded6e740ff37256da584ef53c411c6f0b2441eef96d9ee
7
+ data.tar.gz: f43c9e976a1ad41d5096bc7205799eb7371a980f8753dd6f5507e3e68ea46576e971cf41f347a0e369c83c4b4c2f52c6f7d430f1609343bc0a24213aedd2bb15
@@ -5,6 +5,14 @@ module SportDb
5
5
 
6
6
  class AutoConfParser
7
7
 
8
+ def self.parse( lines, start: )
9
+ ## todo/fix: add support for txt and lines
10
+ ## check if lines_or_txt is an array or just a string
11
+ parser = new( lines, start )
12
+ parser.parse
13
+ end
14
+
15
+
8
16
  include LogUtils::Logging
9
17
 
10
18
  def initialize( lines, start )
@@ -3,6 +3,16 @@
3
3
  module SportDb
4
4
 
5
5
  class MatchParserSimpleV2 ## simple match parser for club match schedules
6
+
7
+ def self.parse( lines, teams, start: )
8
+ ## todo/fix: add support for txt and lines
9
+ ## check if lines_or_txt is an array or just a string
10
+ ## use teams: like start: why? why not?
11
+ parser = new( lines, teams, start )
12
+ parser.parse
13
+ end
14
+
15
+
6
16
  include LogUtils::Logging
7
17
 
8
18
  def initialize( lines, teams, start )
@@ -4,6 +4,10 @@ module SportDb
4
4
 
5
5
  class MatchReaderV2 ## todo/check: rename to MatchReaderV2 (use plural?) why? why not?
6
6
 
7
+ def self.config() Import.config; end
8
+
9
+
10
+
7
11
  def self.read( path, season: nil ) ## use - rename to read_file or from_file etc. - why? why not?
8
12
  txt = File.open( path, 'r:utf-8' ).read
9
13
  parse( txt, season: season )
@@ -14,12 +18,61 @@ class MatchReaderV2 ## todo/check: rename to MatchReaderV2 (use plural?) why?
14
18
  pp recs
15
19
 
16
20
  recs.each do |rec|
17
- league = Sync::League.find!( rec[:league] )
18
- season = Sync::Season.find!( rec[:season] )
21
+ league = Sync::League.find_or_create( rec[:league] )
22
+ season = Sync::Season.find_or_create( rec[:season] )
23
+
24
+ stage = nil
25
+ auto_conf_clubs = nil
26
+ if rec[:stage]
27
+ event = Sync::Event.find_or_create( league: league, season: season )
28
+ stage = Sync::Stage.find( rec[:stage], event: event )
29
+ if stage.nil?
30
+ ## fix: just use Stage.create
31
+ stage = Sync::Stage.find_or_create( rec[:stage], event: event )
32
+
33
+ auto_conf_clubs = AutoConfParser.parse( rec[:lines],
34
+ start: event.start_at )
35
+ end
36
+ else
37
+ event = Sync::Event.find( league: league, season: season )
38
+ if event.nil?
39
+ ## fix: just use Event.create
40
+ event = Sync::Event.find_or_create( league: league, season: season )
41
+
42
+ auto_conf_clubs = AutoConfParser.parse( rec[:lines],
43
+ start: event.start_at )
44
+ end
45
+ end
46
+
47
+
48
+ if auto_conf_clubs
49
+ ## step 1: map/find clubs
50
+ club_recs = []
51
+ ## note: loop over keys (holding the names); values hold the usage counter!! e.g. 'Arsenal' => 2, etc.
52
+ country = config.countries[ league.country.key ] ## hack/fix: convert to Import::Country from Model::Country
53
+ ## todo: check is_a? Country check to respond_to? :key in match in sportdb-clubs !!!!!
54
+ ## todo/fix: just pass in league.country (and NOT key)
55
+ auto_conf_clubs.keys.each do |name|
56
+ club_rec = config.clubs.find_by!( name: name, country: country )
57
+ club_recs << club_rec
58
+ end
59
+
60
+ ## step 2: add to database
61
+ club_recs.each do |club_rec|
62
+ club = Sync::Club.find_or_create( club_rec )
63
+ ## add teams to event
64
+ ## todo/fix: check if team is alreay included?
65
+ ## or clear/destroy_all first!!!
66
+ if stage
67
+ stage.teams << club
68
+ else
69
+ event.teams << club
70
+ end
71
+ end
72
+ end
73
+
19
74
 
20
- event = Sync::Event.find!( league: league, season: season )
21
75
  if rec[:stage]
22
- stage = Sync::Stage.find!( rec[:stage], event: event )
23
76
  teams = stage.teams
24
77
  else
25
78
  teams = event.teams
@@ -5,8 +5,8 @@ module SportDb
5
5
  module Readers
6
6
 
7
7
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
8
- MINOR = 3
9
- PATCH = 7
8
+ MINOR = 4
9
+ PATCH = 0
10
10
  VERSION = [MAJOR,MINOR,PATCH].join('.')
11
11
 
12
12
  def self.version
@@ -10,8 +10,55 @@ require 'helper'
10
10
 
11
11
  class TestReader < MiniTest::Test
12
12
 
13
- def test_read
13
+ def test_read_i
14
+ SportDb.connect( adapter: 'sqlite3', database: ':memory:' )
15
+ SportDb.create_all ## build schema
16
+
17
+ ## turn on logging to console
18
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
19
+
20
+ txt =<<TXT
21
+ = English Premier League 2017/18
22
+
23
+ Matchday 1
24
+
25
+ [Fri Aug/11]
26
+ Arsenal FC 4-3 Leicester City
27
+ [Sat Aug/12]
28
+ Watford FC 3-3 Liverpool FC
29
+ Chelsea FC 2-3 Burnley FC
30
+ Crystal Palace 0-3 Huddersfield Town
31
+ Everton FC 1-0 Stoke City
32
+ Southampton FC 0-0 Swansea City
33
+ West Bromwich Albion 1-0 AFC Bournemouth
34
+ Brighton & Hove Albion 0-2 Manchester City
35
+ [Sun Aug/13]
36
+ Newcastle United 0-2 Tottenham Hotspur
37
+ Manchester United 4-0 West Ham United
38
+
39
+
40
+ Matchday 2
41
+
42
+ [Sat Aug/19]
43
+ Swansea City 0-4 Manchester United
44
+ AFC Bournemouth 0-2 Watford FC
45
+ Burnley FC 0-1 West Bromwich Albion
46
+ Leicester City 2-0 Brighton & Hove Albion
47
+ Liverpool FC 1-0 Crystal Palace
48
+ Southampton FC 3-2 West Ham United
49
+ Stoke City 1-0 Arsenal FC
50
+ [Sun Aug/20]
51
+ Huddersfield Town 1-0 Newcastle United
52
+ Tottenham Hotspur 1-2 Chelsea FC
53
+ [Mon Aug/21]
54
+ Manchester City 1-1 Everton FC
55
+ TXT
56
+
57
+ SportDb::MatchReaderV2.parse( txt )
58
+ end # method test_read_i
59
+
14
60
 
61
+ def xxx_test_read_ii
15
62
  SportDb.connect( adapter: 'sqlite3', database: ':memory:' )
16
63
  SportDb.create_all ## build schema
17
64
 
@@ -33,5 +80,5 @@ class TestReader < MiniTest::Test
33
80
  recs = SportDb::MatchReaderV2.read( path )
34
81
  # path = "../../../openfootball/england/2017-18/1-premierleague-ii.txt"
35
82
  #recs = SportDb::MatchReaderV2.read( path )
36
- end # method test_read
83
+ end # method test_read_ii
37
84
  end # class TestReader
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-readers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-25 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sportdb-config