sportdb-models 1.19.0 → 2.0.3

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -20
  3. data/Manifest.txt +27 -38
  4. data/README.md +31 -31
  5. data/Rakefile +32 -32
  6. data/lib/sportdb/models.rb +212 -159
  7. data/lib/sportdb/{deleter.rb → models/deleter.rb} +3 -9
  8. data/lib/sportdb/models/formats.rb +23 -0
  9. data/lib/sportdb/models/models/assoc.rb +38 -0
  10. data/lib/sportdb/models/{badge.rb → models/badge.rb} +14 -14
  11. data/lib/sportdb/models/models/event.rb +55 -0
  12. data/lib/sportdb/models/{forward.rb → models/forward.rb} +55 -55
  13. data/lib/sportdb/models/{goal.rb → models/goal.rb} +15 -15
  14. data/lib/sportdb/models/models/ground.rb +16 -0
  15. data/lib/sportdb/models/{group.rb → models/group.rb} +10 -7
  16. data/lib/sportdb/models/models/league.rb +20 -0
  17. data/lib/sportdb/models/{roster.rb → models/lineup.rb} +17 -18
  18. data/lib/sportdb/models/{game.rb → models/match.rb} +18 -61
  19. data/lib/sportdb/models/{person.rb → models/person.rb} +21 -21
  20. data/lib/sportdb/models/{round.rb → models/round.rb} +1 -6
  21. data/lib/sportdb/models/{season.rb → models/season.rb} +15 -14
  22. data/lib/sportdb/models/{stage.rb → models/stage.rb} +9 -5
  23. data/lib/sportdb/models/{stats/alltime_standing_entry.rb → models/stats/alltime_standing.rb} +9 -1
  24. data/lib/sportdb/models/{stats/event_standing_entry.rb → models/stats/event_standing.rb} +31 -21
  25. data/lib/sportdb/models/{stats/group_standing_entry.rb → models/stats/group_standing.rb} +10 -1
  26. data/lib/sportdb/models/models/team.rb +56 -0
  27. data/lib/sportdb/models/{world → models/world}/city.rb +2 -2
  28. data/lib/sportdb/models/{world → models/world}/continent.rb +20 -20
  29. data/lib/sportdb/models/{world → models/world}/country.rb +0 -0
  30. data/lib/sportdb/models/{world → models/world}/state.rb +19 -19
  31. data/lib/sportdb/models/schema.rb +466 -0
  32. data/lib/sportdb/models/stats.rb +23 -0
  33. data/lib/sportdb/models/utils.rb +24 -24
  34. data/lib/sportdb/{version.rb → models/version.rb} +27 -22
  35. data/test/helper.rb +46 -42
  36. data/test/test_changes.rb +38 -38
  37. data/test/test_cursor.rb +15 -15
  38. data/test/test_winner.rb +75 -70
  39. metadata +39 -44
  40. data/lib/sportdb/calc.rb +0 -279
  41. data/lib/sportdb/models/assoc.rb +0 -106
  42. data/lib/sportdb/models/assoc_assoc.rb +0 -15
  43. data/lib/sportdb/models/event.rb +0 -66
  44. data/lib/sportdb/models/event_ground.rb +0 -15
  45. data/lib/sportdb/models/event_team.rb +0 -16
  46. data/lib/sportdb/models/ground.rb +0 -100
  47. data/lib/sportdb/models/group_team.rb +0 -14
  48. data/lib/sportdb/models/league.rb +0 -83
  49. data/lib/sportdb/models/stage_team.rb +0 -14
  50. data/lib/sportdb/models/stats/alltime_standing.rb +0 -44
  51. data/lib/sportdb/models/stats/event_standing.rb +0 -55
  52. data/lib/sportdb/models/stats/group_standing.rb +0 -50
  53. data/lib/sportdb/models/team.rb +0 -119
  54. data/lib/sportdb/models/team_compat.rb +0 -64
  55. data/lib/sportdb/patterns.rb +0 -37
  56. data/lib/sportdb/schema.rb +0 -397
  57. data/lib/sportdb/standings.rb +0 -178
  58. data/lib/sportdb/stats.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b1524cb3a76b16ce80f8b2d484b11f8ab11002f6
4
- data.tar.gz: 209a229871e299fab7ac5ca8b90765052fc7da5f
3
+ metadata.gz: a2dca58496a25d977a305dabb59fb4068f6a27d0
4
+ data.tar.gz: 454d482974847f5fee5d025e03449f9058c0b48f
5
5
  SHA512:
6
- metadata.gz: a9c48d1be59422f7fb7726e6121e909aceb9dc3a2306caea036ea19a5a64ebd5f4f7ff828009bf23810f48884d26b970b0f63718fa46ff37e7649e78b3b20f98
7
- data.tar.gz: 3e77eb48eafbf666afc8a92e5f6ea7d9403e157745b8abb508367292910dc3a355324cacc8a236b434cc7936d90876ff3bff95f177686378c33c0a025cf058fe
6
+ metadata.gz: 2588e9757f5277b9f2088cd4b2222cb2712372a25b8ab01cb8346ae908c6c2c8ea8e3a7b9dd3e93d2a69117d30158dfc92a1d914dcb638826d34ecbf90619ecb
7
+ data.tar.gz: 517e715c5c132c1ae5e9c5794ec91f556a5b2bc56efe3b9429df1f4f50cdecc0bd3fcf48a3bae7c41e3407eeb2198a744a2aec1004ac6968d34e61aa3b36470a
@@ -1,21 +1,21 @@
1
- ### 0.4.0 / 2012-10-16
2
-
3
- * Add plain text fixture reader/loader
4
- * Add --generate/g option for generating fixtures from the DB using templates
5
-
6
- ### 0.3.1 / 2012-10-14
7
-
8
- * Move models into its own namespace, that is, SportDB::Models
9
- * Add ActiveRecord logging for --verbose option
10
-
11
- ### 0.3.0 / 2012-10-07
12
-
13
- * Add --delete option to delete all records
14
-
15
- ### 0.2.0 / 2012-10-06
16
-
17
- * Add --load option for builtin fixtures
18
-
19
- ### 0.1.0 / 2012-10-06
20
-
1
+ ### 0.4.0 / 2012-10-16
2
+
3
+ * Add plain text fixture reader/loader
4
+ * Add --generate/g option for generating fixtures from the DB using templates
5
+
6
+ ### 0.3.1 / 2012-10-14
7
+
8
+ * Move models into its own namespace, that is, SportDB::Models
9
+ * Add ActiveRecord logging for --verbose option
10
+
11
+ ### 0.3.0 / 2012-10-07
12
+
13
+ * Add --delete option to delete all records
14
+
15
+ ### 0.2.0 / 2012-10-06
16
+
17
+ * Add --load option for builtin fixtures
18
+
19
+ ### 0.1.0 / 2012-10-06
20
+
21
21
  * Everything is new. First release
@@ -2,46 +2,35 @@ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
- lib/sportdb/calc.rb
6
- lib/sportdb/deleter.rb
7
5
  lib/sportdb/models.rb
8
- lib/sportdb/models/assoc.rb
9
- lib/sportdb/models/assoc_assoc.rb
10
- lib/sportdb/models/badge.rb
11
- lib/sportdb/models/event.rb
12
- lib/sportdb/models/event_ground.rb
13
- lib/sportdb/models/event_team.rb
14
- lib/sportdb/models/forward.rb
15
- lib/sportdb/models/game.rb
16
- lib/sportdb/models/goal.rb
17
- lib/sportdb/models/ground.rb
18
- lib/sportdb/models/group.rb
19
- lib/sportdb/models/group_team.rb
20
- lib/sportdb/models/league.rb
21
- lib/sportdb/models/person.rb
22
- lib/sportdb/models/roster.rb
23
- lib/sportdb/models/round.rb
24
- lib/sportdb/models/season.rb
25
- lib/sportdb/models/stage.rb
26
- lib/sportdb/models/stage_team.rb
27
- lib/sportdb/models/stats/alltime_standing.rb
28
- lib/sportdb/models/stats/alltime_standing_entry.rb
29
- lib/sportdb/models/stats/event_standing.rb
30
- lib/sportdb/models/stats/event_standing_entry.rb
31
- lib/sportdb/models/stats/group_standing.rb
32
- lib/sportdb/models/stats/group_standing_entry.rb
33
- lib/sportdb/models/team.rb
34
- lib/sportdb/models/team_compat.rb
6
+ lib/sportdb/models/deleter.rb
7
+ lib/sportdb/models/formats.rb
8
+ lib/sportdb/models/models/assoc.rb
9
+ lib/sportdb/models/models/badge.rb
10
+ lib/sportdb/models/models/event.rb
11
+ lib/sportdb/models/models/forward.rb
12
+ lib/sportdb/models/models/goal.rb
13
+ lib/sportdb/models/models/ground.rb
14
+ lib/sportdb/models/models/group.rb
15
+ lib/sportdb/models/models/league.rb
16
+ lib/sportdb/models/models/lineup.rb
17
+ lib/sportdb/models/models/match.rb
18
+ lib/sportdb/models/models/person.rb
19
+ lib/sportdb/models/models/round.rb
20
+ lib/sportdb/models/models/season.rb
21
+ lib/sportdb/models/models/stage.rb
22
+ lib/sportdb/models/models/stats/alltime_standing.rb
23
+ lib/sportdb/models/models/stats/event_standing.rb
24
+ lib/sportdb/models/models/stats/group_standing.rb
25
+ lib/sportdb/models/models/team.rb
26
+ lib/sportdb/models/models/world/city.rb
27
+ lib/sportdb/models/models/world/continent.rb
28
+ lib/sportdb/models/models/world/country.rb
29
+ lib/sportdb/models/models/world/state.rb
30
+ lib/sportdb/models/schema.rb
31
+ lib/sportdb/models/stats.rb
35
32
  lib/sportdb/models/utils.rb
36
- lib/sportdb/models/world/city.rb
37
- lib/sportdb/models/world/continent.rb
38
- lib/sportdb/models/world/country.rb
39
- lib/sportdb/models/world/state.rb
40
- lib/sportdb/patterns.rb
41
- lib/sportdb/schema.rb
42
- lib/sportdb/standings.rb
43
- lib/sportdb/stats.rb
44
- lib/sportdb/version.rb
33
+ lib/sportdb/models/version.rb
45
34
  test/helper.rb
46
35
  test/test_changes.rb
47
36
  test/test_cursor.rb
data/README.md CHANGED
@@ -1,31 +1,31 @@
1
- # sportdb-models gem - sport.db schema 'n' models for easy (re)use
2
-
3
- <!--
4
- [![Build Status](https://secure.travis-ci.org/geraldb/sport.db.ruby.png?branch=master)](http://travis-ci.org/geraldb/sport.db.ruby)
5
- -->
6
-
7
- * home :: [github.com/sportdb/sport.db](https://github.com/sportdb/sport.db)
8
- * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
9
- * gem :: [rubygems.org/gems/sportdb-models](https://rubygems.org/gems/sportdb-models)
10
- * rdoc :: [rubydoc.info/gems/sportdb-models](http://rubydoc.info/gems/sportdb-models)
11
- * forum :: [groups.google.com/group/opensport](https://groups.google.com/group/opensport)
12
-
13
-
14
- ## Usage Models
15
-
16
- ![](sportdb-models.png)
17
-
18
-
19
- ## License
20
-
21
- ![](https://publicdomainworks.github.io/buttons/zero88x31.png)
22
-
23
- The `sportdb-models` scripts are dedicated to the public domain.
24
- Use it as you please with no restrictions whatsoever.
25
-
26
-
27
- ## Questions? Comments?
28
-
29
- Send them along to the
30
- [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
31
- Thanks!
1
+ # sportdb-models gem - sport.db schema 'n' models for easy (re)use
2
+
3
+ <!--
4
+ [![Build Status](https://secure.travis-ci.org/geraldb/sport.db.ruby.png?branch=master)](http://travis-ci.org/geraldb/sport.db.ruby)
5
+ -->
6
+
7
+ * home :: [github.com/sportdb/sport.db](https://github.com/sportdb/sport.db)
8
+ * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
9
+ * gem :: [rubygems.org/gems/sportdb-models](https://rubygems.org/gems/sportdb-models)
10
+ * rdoc :: [rubydoc.info/gems/sportdb-models](http://rubydoc.info/gems/sportdb-models)
11
+ * forum :: [groups.google.com/group/opensport](https://groups.google.com/group/opensport)
12
+
13
+
14
+ ## Usage Models
15
+
16
+ ![](sportdb-models.png)
17
+
18
+
19
+ ## License
20
+
21
+ ![](https://publicdomainworks.github.io/buttons/zero88x31.png)
22
+
23
+ The `sportdb-models` scripts are dedicated to the public domain.
24
+ Use it as you please with no restrictions whatsoever.
25
+
26
+
27
+ ## Questions? Comments?
28
+
29
+ Send them along to the
30
+ [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
31
+ Thanks!
data/Rakefile CHANGED
@@ -1,32 +1,32 @@
1
- require 'hoe'
2
- require './lib/sportdb/version.rb'
3
-
4
-
5
- Hoe.spec 'sportdb-models' do
6
-
7
- self.version = SportDb::VERSION
8
-
9
- self.summary = "sportdb-models - sport.db schema 'n' models for easy (re)use"
10
- self.description = summary
11
-
12
- self.urls = ['https://github.com/sportdb/sport.db']
13
-
14
- self.author = 'Gerald Bauer'
15
- self.email = 'opensport@googlegroups.com'
16
-
17
- # switch extension to .markdown for gihub formatting
18
- # -- NB: auto-changed when included in manifest
19
- self.readme_file = 'README.md'
20
- self.history_file = 'CHANGELOG.md'
21
-
22
- self.extra_deps = [
23
- ['worlddb-models', '>= 2.4.0'], # Note: pull in all (extra) dependencies va worlddb-models
24
- ['persondb-models', '>= 0.5.0'], # persons (people) table
25
- ]
26
-
27
- self.licenses = ['Public Domain']
28
-
29
- self.spec_extras = {
30
- required_ruby_version: '>= 2.2.2'
31
- }
32
- end
1
+ require 'hoe'
2
+ require './lib/sportdb/models/version.rb'
3
+
4
+
5
+ Hoe.spec 'sportdb-models' do
6
+
7
+ self.version = SportDb::Module::Models::VERSION
8
+
9
+ self.summary = "sportdb-models - sport.db schema 'n' models for easy (re)use"
10
+ self.description = summary
11
+
12
+ self.urls = { home: 'https://github.com/sportdb/sport.db' }
13
+
14
+ self.author = 'Gerald Bauer'
15
+ self.email = 'opensport@googlegroups.com'
16
+
17
+ # switch extension to .markdown for gihub formatting
18
+ # -- NB: auto-changed when included in manifest
19
+ self.readme_file = 'README.md'
20
+ self.history_file = 'CHANGELOG.md'
21
+
22
+ self.extra_deps = [
23
+ ['worlddb-models', '>= 2.4.0'], # Note: pull in all (extra) dependencies va worlddb-models
24
+ ['persondb-models', '>= 0.5.0'], # persons (people) table
25
+ ]
26
+
27
+ self.licenses = ['Public Domain']
28
+
29
+ self.spec_extras = {
30
+ required_ruby_version: '>= 2.2.2'
31
+ }
32
+ end
@@ -1,159 +1,212 @@
1
- # encoding: utf-8
2
-
3
-
4
- # core and stlibs (note: get included via worlddb-models gem; see worlddb-models gem/lib)
5
- require 'worlddb/models' # NOTE: include worlddb-models gem (not cli tools gem, that is, worlddb)
6
- require 'persondb/models'
7
-
8
-
9
- # our own code
10
-
11
- require 'sportdb/version' # let version always go first
12
-
13
- require 'sportdb/patterns'
14
- require 'sportdb/models/forward'
15
- require 'sportdb/models/world/city'
16
- require 'sportdb/models/world/country'
17
- require 'sportdb/models/world/continent'
18
- require 'sportdb/models/world/state'
19
- require 'sportdb/models/assoc'
20
- require 'sportdb/models/assoc_assoc'
21
- require 'sportdb/models/badge'
22
- require 'sportdb/models/event'
23
- require 'sportdb/models/event_ground'
24
- require 'sportdb/models/event_team'
25
- require 'sportdb/models/game'
26
- require 'sportdb/models/goal'
27
- require 'sportdb/models/ground'
28
- require 'sportdb/models/group'
29
- require 'sportdb/models/group_team'
30
- require 'sportdb/models/league'
31
- require 'sportdb/models/person'
32
- require 'sportdb/models/roster'
33
- require 'sportdb/models/round'
34
- require 'sportdb/models/season'
35
- require 'sportdb/models/stage'
36
- require 'sportdb/models/stage_team'
37
- require 'sportdb/models/team'
38
- require 'sportdb/models/team_compat' ### fix/todo: move to compat gem !!!!!
39
-
40
-
41
- require 'sportdb/models/stats/alltime_standing'
42
- require 'sportdb/models/stats/alltime_standing_entry'
43
- require 'sportdb/models/stats/event_standing'
44
- require 'sportdb/models/stats/event_standing_entry'
45
- require 'sportdb/models/stats/group_standing'
46
- require 'sportdb/models/stats/group_standing_entry'
47
-
48
- require 'sportdb/models/utils' # e.g. GameCursor
49
-
50
-
51
- require 'sportdb/schema' # NB: requires sportdb/models (include SportDB::Models)
52
-
53
-
54
- require 'sportdb/calc' # fix/todo: obsolete - replace w/ standings
55
- require 'sportdb/standings'
56
-
57
- require 'sportdb/deleter'
58
- require 'sportdb/stats'
59
-
60
-
61
- module SportDb
62
-
63
- def self.create
64
- CreateDb.new.up
65
- ConfDb::Model::Prop.create!( key: 'db.schema.sport.version', value: VERSION )
66
- end
67
-
68
- def self.create_all
69
- ## build schema - convenience helper
70
- LogDb.create
71
- ConfDb.create
72
- TagDb.create
73
- WorldDb.create
74
- PersonDb.create
75
- SportDb.create
76
- end
77
-
78
- # delete ALL records (use with care!)
79
- def self.delete!
80
- puts '*** deleting sport table records/data...'
81
- Deleter.new.run
82
- end # method delete!
83
-
84
-
85
- def self.tables
86
- Stats.new.tables
87
- end
88
-
89
-
90
- def self.connect( config={} )
91
-
92
- if config.empty?
93
- puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
94
-
95
- ### change default to ./sport.db ?? why? why not?
96
- db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///sport.db' )
97
-
98
- if db.scheme == 'postgres'
99
- config = {
100
- adapter: 'postgresql',
101
- host: db.host,
102
- port: db.port,
103
- username: db.user,
104
- password: db.password,
105
- database: db.path[1..-1],
106
- encoding: 'utf8'
107
- }
108
- else # assume sqlite3
109
- config = {
110
- adapter: db.scheme, # sqlite3
111
- database: db.path[1..-1] # sport.db (NB: cut off leading /, thus 1..-1)
112
- }
113
- end
114
- end
115
-
116
- ## todo/check: use if defined?( JRUBY_VERSION ) instead ??
117
- if RUBY_PLATFORM =~ /java/ && config[:adapter] == 'sqlite3'
118
- # quick hack for JRuby sqlite3 support via jdbc
119
- puts "jruby quick hack - adding jdbc libs for jruby sqlite3 database support"
120
- require 'jdbc/sqlite3'
121
- require 'active_record/connection_adapters/jdbc_adapter'
122
- require 'active_record/connection_adapters/jdbcsqlite3_adapter'
123
- end
124
-
125
- puts "Connecting to db using settings: "
126
- pp config
127
- ActiveRecord::Base.establish_connection( config )
128
- # ActiveRecord::Base.logger = Logger.new( STDOUT )
129
-
130
- ## if sqlite3 add (use) some pragmas for speedups
131
- if config[:adapter] == 'sqlite3'
132
- ## check/todo: if in memory e.g. ':memory:' no pragma needed!!
133
- con = ActiveRecord::Base.connection
134
- con.execute( 'PRAGMA synchronous=OFF;' )
135
- con.execute( 'PRAGMA journal_mode=OFF;' )
136
- con.execute( 'PRAGMA temp_store=MEMORY;' )
137
- end
138
- end
139
-
140
-
141
- def self.setup_in_memory_db
142
-
143
- # Database Setup & Config
144
- ActiveRecord::Base.logger = Logger.new( STDOUT )
145
- ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
146
-
147
- connect( adapter: 'sqlite3',
148
- database: ':memory:' )
149
-
150
- ## build schema
151
- create_all
152
- end # setup_in_memory_db (using SQLite :memory:)
153
-
154
-
155
- end # module SportDb
156
-
157
-
158
- ## say hello
159
- puts SportDb.banner if defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG
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
+