sportdb-models 2.0.3 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,27 +1,26 @@
1
- module SportDb
2
- module Module
3
- module Models
4
- MAJOR = 2
5
- MINOR = 0
6
- PATCH = 3
7
- VERSION = [MAJOR,MINOR,PATCH].join('.')
8
-
9
- def self.version
10
- VERSION
11
- end
12
-
13
- def self.banner
14
- "sportdb-models/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
15
- end
16
-
17
- def self.root
18
- "#{File.expand_path( File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))) )}"
19
- end
20
-
21
- end # module Models
22
- end # module Module
23
-
24
- #################
25
- ## add convenience shortcuts
26
- VERSION = Module::Models::VERSION
27
- end # module SportDb
1
+ module SportDb
2
+ module Module
3
+ module Models
4
+ MAJOR = 2
5
+ MINOR = 1
6
+ PATCH = 0
7
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
8
+
9
+ def self.version
10
+ VERSION
11
+ end
12
+
13
+ def self.banner
14
+ "sportdb-models/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
15
+ end
16
+
17
+ def self.root
18
+ File.expand_path( File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))) )
19
+ end
20
+ end # module Models
21
+ end # module Module
22
+
23
+ #################
24
+ ## add convenience shortcuts
25
+ VERSION = Module::Models::VERSION
26
+ end # module SportDb
@@ -1,212 +1,240 @@
1
- # core and stlibs (note: get included via worlddb-models gem; see worlddb-models gem/lib)
2
- require 'worlddb/models' # NOTE: include worlddb-models gem (not cli tools gem, that is, worlddb)
3
- require 'persondb/models'
4
-
5
-
6
- # our own code
7
-
8
- require 'sportdb/models/version' # let version always go first
9
-
10
- require 'sportdb/models/formats'
11
- require 'sportdb/models/models/forward'
12
-
13
- require 'sportdb/models/models/world/city'
14
- require 'sportdb/models/models/world/country'
15
- require 'sportdb/models/models/world/continent'
16
- require 'sportdb/models/models/world/state'
17
-
18
- require 'sportdb/models/models/assoc'
19
- require 'sportdb/models/models/badge'
20
- require 'sportdb/models/models/event'
21
- require 'sportdb/models/models/goal'
22
- require 'sportdb/models/models/ground'
23
- require 'sportdb/models/models/group'
24
- require 'sportdb/models/models/league'
25
- require 'sportdb/models/models/lineup'
26
- require 'sportdb/models/models/match'
27
- require 'sportdb/models/models/person'
28
- require 'sportdb/models/models/round'
29
- require 'sportdb/models/models/season'
30
- require 'sportdb/models/models/stage'
31
- require 'sportdb/models/models/team'
32
-
33
- require 'sportdb/models/models/stats/alltime_standing'
34
- require 'sportdb/models/models/stats/event_standing'
35
- require 'sportdb/models/models/stats/group_standing'
36
-
37
- require 'sportdb/models/schema' # note: requires sportdb/models (include SportDB::Models)
38
-
39
- require 'sportdb/models/utils' # e.g. MatchCursor
40
-
41
- require 'sportdb/models/deleter'
42
- require 'sportdb/models/stats'
43
-
44
-
45
- module SportDb
46
-
47
- def self.create
48
- CreateDb.new.up
49
- ConfDb::Model::Prop.create!( key: 'db.schema.sport.version', value: VERSION )
50
- end
51
-
52
- def self.create_all
53
- ## build schema - convenience helper
54
- LogDb.create
55
- ConfDb.create
56
- TagDb.create
57
- WorldDb.create
58
- PersonDb.create
59
- SportDb.create
60
- end
61
-
62
- def self.auto_migrate!
63
- ### todo/fix:
64
- ## check props table and versions!!!!!
65
-
66
- # first time? - auto-run db migratation, that is, create db tables
67
- unless LogDb::Model::Log.table_exists?
68
- LogDb.create # add logs table
69
- end
70
-
71
- unless ConfDb::Model::Prop.table_exists?
72
- ConfDb.create # add props table
73
- end
74
-
75
-
76
- unless TagDb::Model::Tag.table_exists?
77
- TagDb.create # add tags & taggings tables
78
- end
79
-
80
- unless WorldDb::Model::Place.table_exists?
81
- WorldDb.create # add places, & co. tables
82
- end
83
-
84
- unless PersonDb::Model::Person.table_exists?
85
- PersonDb.create # add persons table
86
- end
87
-
88
- unless SportDb::Model::League.table_exists?
89
- SportDb.create
90
- end
91
- end # method auto_migrate!
92
-
93
-
94
- # delete ALL records (use with care!)
95
- def self.delete!
96
- puts '*** deleting sport table records/data...'
97
- Deleter.new.run
98
- end # method delete!
99
-
100
-
101
- def self.tables
102
- Stats.new.tables
103
- end
104
-
105
-
106
- def self.connect!( config={} ) # convenience shortcut w/ automigrate
107
- connect( config )
108
- auto_migrate!
109
- end
110
-
111
- def self.connect( config={} )
112
- if config.empty?
113
- puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
114
-
115
- ### change default to ./sport.db ?? why? why not?
116
- db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///sport.db' )
117
-
118
- config = if db.scheme == 'postgres'
119
- { adapter: 'postgresql',
120
- host: db.host,
121
- port: db.port,
122
- username: db.user,
123
- password: db.password,
124
- database: db.path[1..-1],
125
- encoding: 'utf8'
126
- }
127
- else # assume sqlite3
128
- { adapter: db.scheme, # sqlite3
129
- database: db.path[1..-1] # sport.db (NB: cut off leading /, thus 1..-1)
130
- }
131
- end
132
- else
133
- ## note: for compatibility lets you also pass-in/use string keys
134
- ## e.g. YAML.load uses/returns always string keys - always auto-convert to symbols
135
- config = config.symbolize_keys
136
- end
137
-
138
-
139
- ## todo/check/fix: move jruby "hack" to attic - why? why not?
140
- ## todo/check: use if defined?( JRUBY_VERSION ) instead ??
141
- ## if RUBY_PLATFORM =~ /java/ && config[:adapter] == 'sqlite3'
142
- # quick hack for JRuby sqlite3 support via jdbc
143
- ## puts "jruby quick hack - adding jdbc libs for jruby sqlite3 database support"
144
- ## require 'jdbc/sqlite3'
145
- ## require 'active_record/connection_adapters/jdbc_adapter'
146
- ## require 'active_record/connection_adapters/jdbcsqlite3_adapter'
147
- ## end
148
-
149
- puts "Connecting to db using settings: "
150
- pp config
151
- ActiveRecord::Base.establish_connection( config )
152
- # ActiveRecord::Base.logger = Logger.new( STDOUT )
153
-
154
- ## if sqlite3 add (use) some pragmas for speedups
155
- if config[:adapter] == 'sqlite3' &&
156
- config[:database] != ':memory:'
157
- ## note: if in memory database e.g. ':memory:' no pragma needed!!
158
- ## try to speed up sqlite
159
- ## see http://www.sqlite.org/pragma.html
160
- con = ActiveRecord::Base.connection
161
- con.execute( 'PRAGMA synchronous=OFF;' )
162
- con.execute( 'PRAGMA journal_mode=OFF;' )
163
- con.execute( 'PRAGMA temp_store=MEMORY;' )
164
- end
165
- end
166
-
167
-
168
- def self.setup_in_memory_db
169
- # Database Setup & Config
170
- ActiveRecord::Base.logger = Logger.new( STDOUT )
171
- ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
172
-
173
- connect( adapter: 'sqlite3',
174
- database: ':memory:' )
175
-
176
- ## build schema
177
- create_all
178
- end # setup_in_memory_db (using SQLite :memory:)
179
-
180
-
181
- end # module SportDb
182
-
183
-
184
-
185
- module SportDb
186
- module Model
187
- ##################
188
- # add alias why? why not?
189
- #
190
- # more aliases to consider:
191
- # - Tournament for Event?
192
- # - Cup for League?
193
- # - Roster for Lineup?
194
- # - Stadium for Ground? - why? why not?
195
-
196
-
197
- Competition = Event
198
- Comp = Event
199
-
200
- LineUp = Lineup
201
- Squad = Lineup
202
-
203
- Game = Match ## add (old) alias - why? why not?
204
- end # module Model
205
- end # module SportDb
206
-
207
-
208
-
209
- ## say hello
210
- puts SportDb::Module::Models.banner
211
-
212
-
1
+ # core and stlibs (note: get included via worlddb-models gem; see worlddb-models gem/lib)
2
+ require 'worlddb/models' # NOTE: include worlddb-models gem (not cli tools gem, that is, worlddb)
3
+ require 'persondb/models'
4
+
5
+
6
+ # our own code
7
+ require_relative 'models/version' # let version always go first
8
+
9
+ require_relative 'models/formats'
10
+ require_relative 'models/models/forward'
11
+
12
+ require_relative 'models/models/world/city'
13
+ require_relative 'models/models/world/country'
14
+ require_relative 'models/models/world/continent'
15
+ require_relative 'models/models/world/state'
16
+
17
+ require_relative 'models/models/assoc'
18
+ require_relative 'models/models/badge'
19
+ require_relative 'models/models/event'
20
+ require_relative 'models/models/goal'
21
+ require_relative 'models/models/ground'
22
+ require_relative 'models/models/group'
23
+ require_relative 'models/models/league'
24
+ require_relative 'models/models/lineup'
25
+ require_relative 'models/models/match'
26
+ require_relative 'models/models/person'
27
+ require_relative 'models/models/round'
28
+ require_relative 'models/models/season'
29
+ require_relative 'models/models/stage'
30
+ require_relative 'models/models/team'
31
+
32
+ require_relative 'models/models/stats/alltime_standing'
33
+ require_relative 'models/models/stats/event_standing'
34
+ require_relative 'models/models/stats/group_standing'
35
+
36
+ require_relative 'models/schema' # note: requires sportdb/models (include SportDB::Models)
37
+
38
+ require_relative 'models/utils' # e.g. MatchCursor
39
+
40
+ require_relative 'models/deleter'
41
+ require_relative 'models/stats'
42
+
43
+
44
+
45
+ module SportDb
46
+
47
+ def self.create
48
+ CreateDb.new.up
49
+ ConfDb::Model::Prop.create!( key: 'db.schema.sport.version', value: VERSION )
50
+ end
51
+
52
+ def self.create_all
53
+ ## build schema - convenience helper
54
+ LogDb.create
55
+ ConfDb.create
56
+ TagDb.create
57
+ WorldDb.create
58
+ PersonDb.create
59
+ SportDb.create
60
+ end
61
+
62
+ def self.auto_migrate!
63
+ ### todo/fix:
64
+ ## check props table and versions!!!!!
65
+
66
+ # first time? - auto-run db migratation, that is, create db tables
67
+ unless LogDb::Model::Log.table_exists?
68
+ LogDb.create # add logs table
69
+ end
70
+
71
+ unless ConfDb::Model::Prop.table_exists?
72
+ ConfDb.create # add props table
73
+ end
74
+
75
+
76
+ unless TagDb::Model::Tag.table_exists?
77
+ TagDb.create # add tags & taggings tables
78
+ end
79
+
80
+ unless WorldDb::Model::Place.table_exists?
81
+ WorldDb.create # add places, & co. tables
82
+ end
83
+
84
+ unless PersonDb::Model::Person.table_exists?
85
+ PersonDb.create # add persons table
86
+ end
87
+
88
+ unless SportDb::Model::League.table_exists?
89
+ SportDb.create
90
+ end
91
+ end # method auto_migrate!
92
+
93
+
94
+ # delete ALL records (use with care!)
95
+ def self.delete!
96
+ puts '*** deleting sport table records/data...'
97
+ Deleter.new.run
98
+ end # method delete!
99
+
100
+
101
+ def self.tables
102
+ Stats.new.tables
103
+ end
104
+
105
+
106
+ ### use/change to **config - to allow "inline" conif with keywords
107
+ ## (without enclosing {}) - why? why not?
108
+ def self.connect!( config={} ) # convenience shortcut w/ automigrate
109
+ connect( config )
110
+ auto_migrate!
111
+ end
112
+
113
+ def self.connect( config={} )
114
+ if config.empty?
115
+ puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
116
+
117
+ ### change default to ./sport.db ?? why? why not?
118
+ db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///sport.db' )
119
+
120
+ config = if db.scheme == 'postgres'
121
+ { adapter: 'postgresql',
122
+ host: db.host,
123
+ port: db.port,
124
+ username: db.user,
125
+ password: db.password,
126
+ database: db.path[1..-1],
127
+ encoding: 'utf8'
128
+ }
129
+ else # assume sqlite3
130
+ { adapter: db.scheme, # sqlite3
131
+ database: db.path[1..-1] # sport.db (NB: cut off leading /, thus 1..-1)
132
+ }
133
+ end
134
+ else
135
+ ## note: for compatibility lets you also pass-in/use string keys
136
+ ## e.g. YAML.load uses/returns always string keys - always auto-convert to symbols
137
+ config = config.symbolize_keys
138
+ end
139
+
140
+
141
+ ## todo/check/fix: move jruby "hack" to attic - why? why not?
142
+ ## todo/check: use if defined?( JRUBY_VERSION ) instead ??
143
+ ## if RUBY_PLATFORM =~ /java/ && config[:adapter] == 'sqlite3'
144
+ # quick hack for JRuby sqlite3 support via jdbc
145
+ ## puts "jruby quick hack - adding jdbc libs for jruby sqlite3 database support"
146
+ ## require 'jdbc/sqlite3'
147
+ ## require 'active_record/connection_adapters/jdbc_adapter'
148
+ ## require 'active_record/connection_adapters/jdbcsqlite3_adapter'
149
+ ## end
150
+
151
+ puts "Connecting to db using settings: "
152
+ pp config
153
+ ActiveRecord::Base.establish_connection( config )
154
+ # ActiveRecord::Base.logger = Logger.new( STDOUT )
155
+
156
+ ## if sqlite3 add (use) some pragmas for speedups
157
+ if config[:adapter] == 'sqlite3' &&
158
+ config[:database] != ':memory:'
159
+ ## note: if in memory database e.g. ':memory:' no pragma needed!!
160
+ ## try to speed up sqlite
161
+ ## see http://www.sqlite.org/pragma.html
162
+ con = ActiveRecord::Base.connection
163
+ con.execute( 'PRAGMA synchronous=OFF;' )
164
+ con.execute( 'PRAGMA journal_mode=OFF;' )
165
+ con.execute( 'PRAGMA temp_store=MEMORY;' )
166
+ end
167
+ end
168
+
169
+
170
+
171
+ def self.open( path ) ## shortcut for sqlite only
172
+ config = {
173
+ adapter: 'sqlite3',
174
+ database: path # e.g. ':memory', './sport.db'
175
+ }
176
+ connect!( config )
177
+ end
178
+
179
+ def self.setup_in_memory_db
180
+ # Database Setup & Config
181
+ ## add logger as option - why? why not?
182
+ ## e.g. open_mem( logger: true ) or
183
+ ## always possible to add logger "manually" before
184
+ ## thus, no need for option/flag really ??
185
+ ## ActiveRecord::Base.logger = Logger.new( STDOUT )
186
+ ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
187
+
188
+ config = {
189
+ adapter: 'sqlite3',
190
+ database: ':memory:'
191
+ }
192
+ connect( config )
193
+
194
+ ## build schema
195
+ create_all
196
+ end # setup_in_memory_db (using SQLite :memory:)
197
+
198
+
199
+ ###########
200
+ # add more aliases/alt names for in memory db - why? why not?
201
+ ## rename to open_mem for canonical name - why? why not?
202
+ class << self
203
+ alias_method :open_mem, :setup_in_memory_db
204
+ alias_method :open_memory, :setup_in_memory_db
205
+ alias_method :open_in_memory, :setup_in_memory_db
206
+ end
207
+ end # module SportDb
208
+
209
+
210
+
211
+ module SportDb
212
+ module Model
213
+ ##################
214
+ # add alias why? why not?
215
+ #
216
+ # more aliases to consider:
217
+ # - Roster for Squad/Lineup?
218
+ # - Stadium / Venue for Ground? - why? why not?
219
+ #
220
+ # use Competition/Tournament for League/Cup alias
221
+ #
222
+ # Event => LeagueSeason (League+Season) - use LeagueSeason alias - why? why not?
223
+
224
+
225
+ ### fix - use Squad for (all) LeagueSeason players
226
+ ## use Lineup for players for one match!!!!
227
+
228
+ LineUp = Lineup
229
+ Squad = Lineup #### fix - do NOT use squad and lineup as alias (see above)!!!!
230
+
231
+ Game = Match ## add (old) alias - why? why not?
232
+ end # module Model
233
+ end # module SportDb
234
+
235
+
236
+
237
+ ## say hello
238
+ puts SportDb::Module::Models.banner
239
+
240
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-17 00:00:00.000000000 Z
11
+ date: 2024-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: worlddb-models
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '3.22'
67
+ version: '4.1'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.22'
74
+ version: '4.1'
75
75
  description: sportdb-models - sport.db schema 'n' models for easy (re)use
76
76
  email: opensport@googlegroups.com
77
77
  executables: []
@@ -114,15 +114,11 @@ files:
114
114
  - lib/sportdb/models/stats.rb
115
115
  - lib/sportdb/models/utils.rb
116
116
  - lib/sportdb/models/version.rb
117
- - test/helper.rb
118
- - test/test_changes.rb
119
- - test/test_cursor.rb
120
- - test/test_winner.rb
121
117
  homepage: https://github.com/sportdb/sport.db
122
118
  licenses:
123
119
  - Public Domain
124
120
  metadata: {}
125
- post_install_message:
121
+ post_install_message:
126
122
  rdoc_options:
127
123
  - "--main"
128
124
  - README.md
@@ -139,9 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
135
  - !ruby/object:Gem::Version
140
136
  version: '0'
141
137
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.5.2
144
- signing_key:
138
+ rubygems_version: 3.4.10
139
+ signing_key:
145
140
  specification_version: 4
146
141
  summary: sportdb-models - sport.db schema 'n' models for easy (re)use
147
142
  test_files: []
data/test/helper.rb DELETED
@@ -1,46 +0,0 @@
1
- ## minitest setup
2
- require 'minitest/autorun'
3
-
4
-
5
- ## our own code
6
- require 'sportdb/models'
7
-
8
-
9
- #####################
10
- # Models shortcuts
11
-
12
- Country = WorldDb::Model::Country
13
-
14
- Person = PersonDb::Model::Person
15
-
16
- League = SportDb::Model::League
17
- Season = SportDb::Model::Season
18
- Event = SportDb::Model::Event
19
- Team = SportDb::Model::Team
20
- Lineup = SportDb::Model::Lineup
21
- Assoc = SportDb::Model::Assoc
22
- AssocAssoc = SportDb::Model::AssocAssoc
23
-
24
- Round = SportDb::Model::Round
25
- Group = SportDb::Model::Group
26
- Stage = SportDb::Model::Stage
27
- Match = SportDb::Model::Match
28
- MatchCursor = SportDb::Model::MatchCursor
29
-
30
-
31
- EventStanding = SportDb::Model::EventStanding
32
- EventStandingEntry = SportDb::Model::EventStandingEntry
33
- GroupStanding = SportDb::Model::GroupStanding
34
- GroupStandingEntry = SportDb::Model::GroupStandingEntry
35
- AlltimeStanding = SportDb::Model::AlltimeStanding
36
- AlltimeStandingEntry = SportDb::Model::AlltimeStandingEntry
37
-
38
-
39
- #################################
40
- # setup db -> schema / tables
41
-
42
- SportDb.setup_in_memory_db
43
-
44
- ## test helpers here
45
- SportDb.delete!
46
- SportDb.tables