baza 0.0.21 → 0.0.22
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 +4 -4
- data/Gemfile +10 -10
- data/Gemfile.lock +34 -25
- data/VERSION +1 -1
- data/baza.gemspec +83 -79
- data/lib/baza/driver/mysql/column.rb +19 -0
- data/lib/baza/driver/mysql/foreign_key.rb +19 -0
- data/lib/baza/driver/mysql/table.rb +53 -12
- data/lib/baza/driver/pg/column.rb +20 -1
- data/lib/baza/driver/pg/foreign_key.rb +19 -0
- data/lib/baza/driver/pg/table.rb +52 -1
- data/lib/baza/errors.rb +1 -0
- data/lib/baza/foreign_key.rb +17 -0
- data/lib/baza/sql_queries/postgres_upsert_duplicate_key.rb +16 -2
- data/spec/drivers/active_record_mysql2_spec.rb +1 -0
- data/spec/drivers/active_record_mysql_spec.rb +1 -0
- data/spec/drivers/active_record_pg_spec.rb +1 -0
- data/spec/drivers/mysql2_spec.rb +1 -0
- data/spec/drivers/mysql_spec.rb +1 -0
- data/spec/drivers/pg_spec.rb +1 -0
- data/spec/support/driver_foreign_keys_collection.rb +54 -0
- data/spec/support/driver_indexes_collection.rb +15 -6
- data/spec/support/driver_tables_collection.rb +1 -1
- metadata +66 -62
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8369c9293d5a5bc7d773f2d0b433851dfbfd7357
|
|
4
|
+
data.tar.gz: 536bc2b56f0483e5df1f778552651afa91f0cce1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ace04b5dc91c6379d5764cd6229c6519dfec9aff794778a6e1192359b7d3de68b3006d6be48895fa633982762d440fb4ef6908d316a6891bd9c15828d391e4b
|
|
7
|
+
data.tar.gz: 3dd8ab58ffc4e7bef9d7439bb57df231c03f81ed7b6d7a9a754973d4ce94326f266e73b60de82489e8622d4998d6850bccf4db2c02f8a6dd1e7eb7e0a2d000ed
|
data/Gemfile
CHANGED
|
@@ -3,9 +3,9 @@ source "http://rubygems.org"
|
|
|
3
3
|
# Example:
|
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
|
5
5
|
|
|
6
|
-
gem "datet", "~> 0.0.25"
|
|
7
6
|
gem "array_enumerator", "~> 0.0.10"
|
|
8
7
|
gem "auto_autoloader", "~> 0.0.1"
|
|
8
|
+
gem "datet", "~> 0.0.25"
|
|
9
9
|
gem "event_handler", "~> 0.0.0"
|
|
10
10
|
gem "simple_delegate", "~> 0.0.2"
|
|
11
11
|
gem "string-cases", "~> 0.0.4"
|
|
@@ -14,21 +14,21 @@ gem "wref", "~> 0.0.8"
|
|
|
14
14
|
# Add dependencies to develop your gem here.
|
|
15
15
|
# Include everything needed to run rake, tests, features, etc.
|
|
16
16
|
group :development, :test do
|
|
17
|
-
gem "
|
|
18
|
-
gem "
|
|
17
|
+
gem "activerecord", "4.2.5"
|
|
18
|
+
gem "activerecord-jdbc-adapter", platform: :jruby
|
|
19
|
+
gem "best_practice_project", "0.0.9", require: false
|
|
19
20
|
gem "bundler"
|
|
20
|
-
gem "jeweler"
|
|
21
|
-
gem "pry"
|
|
22
|
-
gem "jdbc-sqlite3", platform: :jruby
|
|
23
21
|
gem "jdbc-mysql", platform: :jruby
|
|
24
|
-
gem "
|
|
25
|
-
gem "
|
|
22
|
+
gem "jdbc-sqlite3", platform: :jruby
|
|
23
|
+
gem "jeweler", "2.3.3"
|
|
26
24
|
gem "mysql", "2.9.1", platform: :ruby
|
|
27
25
|
gem "mysql2", "0.4.2", platform: :ruby
|
|
28
26
|
gem "pg", "0.18.4", platform: :ruby
|
|
29
|
-
gem "
|
|
30
|
-
gem "
|
|
27
|
+
gem "pry"
|
|
28
|
+
gem "rdoc"
|
|
29
|
+
gem "rspec", "3.4.0"
|
|
31
30
|
gem "rubocop", "0.39.0", require: false
|
|
31
|
+
gem "sqlite3", platform: :ruby
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
gem "codeclimate-test-reporter", group: :test, require: nil
|
data/Gemfile.lock
CHANGED
|
@@ -16,7 +16,8 @@ GEM
|
|
|
16
16
|
minitest (~> 5.1)
|
|
17
17
|
thread_safe (~> 0.3, >= 0.3.4)
|
|
18
18
|
tzinfo (~> 1.1)
|
|
19
|
-
addressable (2.
|
|
19
|
+
addressable (2.5.0)
|
|
20
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
|
20
21
|
arel (6.0.3)
|
|
21
22
|
array_enumerator (0.0.10)
|
|
22
23
|
ast (2.2.0)
|
|
@@ -34,52 +35,55 @@ GEM
|
|
|
34
35
|
diff-lcs (1.2.5)
|
|
35
36
|
docile (1.1.5)
|
|
36
37
|
event_handler (0.0.0)
|
|
37
|
-
faraday (0.9.
|
|
38
|
+
faraday (0.9.2)
|
|
38
39
|
multipart-post (>= 1.2, < 3)
|
|
39
40
|
ffi (1.9.10-java)
|
|
40
|
-
git (1.
|
|
41
|
-
github_api (0.
|
|
41
|
+
git (1.3.0)
|
|
42
|
+
github_api (0.11.3)
|
|
42
43
|
addressable (~> 2.3)
|
|
43
|
-
descendants_tracker (~> 0.0.
|
|
44
|
+
descendants_tracker (~> 0.0.1)
|
|
44
45
|
faraday (~> 0.8, < 0.10)
|
|
45
|
-
hashie (>=
|
|
46
|
+
hashie (>= 1.2)
|
|
46
47
|
multi_json (>= 1.7.5, < 2.0)
|
|
47
|
-
nokogiri (~> 1.6.
|
|
48
|
+
nokogiri (~> 1.6.0)
|
|
48
49
|
oauth2
|
|
49
|
-
hashie (3.4.
|
|
50
|
-
highline (1.7.
|
|
50
|
+
hashie (3.4.6)
|
|
51
|
+
highline (1.7.8)
|
|
51
52
|
i18n (0.7.0)
|
|
53
|
+
jar-dependencies (0.3.9)
|
|
52
54
|
jdbc-mysql (5.1.37)
|
|
53
55
|
jdbc-sqlite3 (3.8.11.2)
|
|
54
|
-
jeweler (2.
|
|
56
|
+
jeweler (2.3.3)
|
|
55
57
|
builder
|
|
56
58
|
bundler (>= 1.0)
|
|
57
59
|
git (>= 1.2.5)
|
|
58
|
-
github_api
|
|
60
|
+
github_api (~> 0.11.0)
|
|
59
61
|
highline (>= 1.6.15)
|
|
60
62
|
nokogiri (>= 1.5.10)
|
|
63
|
+
psych (~> 2.2)
|
|
61
64
|
rake
|
|
62
65
|
rdoc
|
|
66
|
+
semver2
|
|
63
67
|
json (1.8.3)
|
|
64
68
|
json (1.8.3-java)
|
|
65
|
-
jwt (1.5.
|
|
69
|
+
jwt (1.5.6)
|
|
66
70
|
method_source (0.8.2)
|
|
67
|
-
|
|
71
|
+
mini_portile2 (2.1.0)
|
|
68
72
|
minitest (5.8.3)
|
|
69
|
-
multi_json (1.
|
|
70
|
-
multi_xml (0.
|
|
73
|
+
multi_json (1.12.1)
|
|
74
|
+
multi_xml (0.6.0)
|
|
71
75
|
multipart-post (2.0.0)
|
|
72
76
|
mysql (2.9.1)
|
|
73
77
|
mysql2 (0.4.2)
|
|
74
|
-
nokogiri (1.6.
|
|
75
|
-
|
|
76
|
-
nokogiri (1.6.
|
|
77
|
-
oauth2 (1.
|
|
78
|
-
faraday (>= 0.8, < 0.
|
|
78
|
+
nokogiri (1.6.8.1)
|
|
79
|
+
mini_portile2 (~> 2.1.0)
|
|
80
|
+
nokogiri (1.6.8.1-java)
|
|
81
|
+
oauth2 (1.3.0)
|
|
82
|
+
faraday (>= 0.8, < 0.11)
|
|
79
83
|
jwt (~> 1.0)
|
|
80
84
|
multi_json (~> 1.3)
|
|
81
85
|
multi_xml (~> 0.5)
|
|
82
|
-
rack (
|
|
86
|
+
rack (>= 1.2, < 3)
|
|
83
87
|
parser (2.3.0.7)
|
|
84
88
|
ast (~> 2.2)
|
|
85
89
|
pg (0.18.4)
|
|
@@ -93,9 +97,13 @@ GEM
|
|
|
93
97
|
method_source (~> 0.8.1)
|
|
94
98
|
slop (~> 3.4)
|
|
95
99
|
spoon (~> 0.0)
|
|
96
|
-
|
|
100
|
+
psych (2.2.2)
|
|
101
|
+
psych (2.2.2-java)
|
|
102
|
+
jar-dependencies (>= 0.1.7)
|
|
103
|
+
public_suffix (2.0.5)
|
|
104
|
+
rack (2.0.1)
|
|
97
105
|
rainbow (2.1.0)
|
|
98
|
-
rake (
|
|
106
|
+
rake (12.0.0)
|
|
99
107
|
rdoc (4.2.0)
|
|
100
108
|
json (~> 1.4)
|
|
101
109
|
rspec (3.4.0)
|
|
@@ -118,6 +126,7 @@ GEM
|
|
|
118
126
|
ruby-progressbar (~> 1.7)
|
|
119
127
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
120
128
|
ruby-progressbar (1.7.5)
|
|
129
|
+
semver2 (3.4.2)
|
|
121
130
|
simple_delegate (0.0.2)
|
|
122
131
|
simplecov (0.10.0)
|
|
123
132
|
docile (~> 1.1.0)
|
|
@@ -152,7 +161,7 @@ DEPENDENCIES
|
|
|
152
161
|
event_handler (~> 0.0.0)
|
|
153
162
|
jdbc-mysql
|
|
154
163
|
jdbc-sqlite3
|
|
155
|
-
jeweler
|
|
164
|
+
jeweler (= 2.3.3)
|
|
156
165
|
mysql (= 2.9.1)
|
|
157
166
|
mysql2 (= 0.4.2)
|
|
158
167
|
pg (= 0.18.4)
|
|
@@ -166,4 +175,4 @@ DEPENDENCIES
|
|
|
166
175
|
wref (~> 0.0.8)
|
|
167
176
|
|
|
168
177
|
BUNDLED WITH
|
|
169
|
-
1.
|
|
178
|
+
1.13.7
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.22
|
data/baza.gemspec
CHANGED
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: baza 0.0.
|
|
5
|
+
# stub: baza 0.0.22 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
|
-
s.name = "baza"
|
|
9
|
-
s.version = "0.0.
|
|
8
|
+
s.name = "baza".freeze
|
|
9
|
+
s.version = "0.0.22"
|
|
10
10
|
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
-
s.require_paths = ["lib"]
|
|
13
|
-
s.authors = ["Kasper Johansen"]
|
|
14
|
-
s.date = "
|
|
15
|
-
s.description = "A database abstraction layer, model framework and database framework."
|
|
16
|
-
s.email = "kj@gfish.com"
|
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
12
|
+
s.require_paths = ["lib".freeze]
|
|
13
|
+
s.authors = ["Kasper Johansen".freeze]
|
|
14
|
+
s.date = "2017-01-22"
|
|
15
|
+
s.description = "A database abstraction layer, model framework and database framework.".freeze
|
|
16
|
+
s.email = "kj@gfish.com".freeze
|
|
17
17
|
s.extra_rdoc_files = [
|
|
18
18
|
"LICENSE.txt",
|
|
19
19
|
"README.md"
|
|
@@ -58,6 +58,7 @@ Gem::Specification.new do |s|
|
|
|
58
58
|
"lib/baza/driver/mysql/commands.rb",
|
|
59
59
|
"lib/baza/driver/mysql/database.rb",
|
|
60
60
|
"lib/baza/driver/mysql/databases.rb",
|
|
61
|
+
"lib/baza/driver/mysql/foreign_key.rb",
|
|
61
62
|
"lib/baza/driver/mysql/index.rb",
|
|
62
63
|
"lib/baza/driver/mysql/indexes.rb",
|
|
63
64
|
"lib/baza/driver/mysql/result.rb",
|
|
@@ -99,6 +100,7 @@ Gem::Specification.new do |s|
|
|
|
99
100
|
"lib/baza/driver/pg/create_index_sql_creator.rb",
|
|
100
101
|
"lib/baza/driver/pg/database.rb",
|
|
101
102
|
"lib/baza/driver/pg/databases.rb",
|
|
103
|
+
"lib/baza/driver/pg/foreign_key.rb",
|
|
102
104
|
"lib/baza/driver/pg/index.rb",
|
|
103
105
|
"lib/baza/driver/pg/indexes.rb",
|
|
104
106
|
"lib/baza/driver/pg/result.rb",
|
|
@@ -130,6 +132,7 @@ Gem::Specification.new do |s|
|
|
|
130
132
|
"lib/baza/driver/sqlite3_rhodes.rb",
|
|
131
133
|
"lib/baza/dump.rb",
|
|
132
134
|
"lib/baza/errors.rb",
|
|
135
|
+
"lib/baza/foreign_key.rb",
|
|
133
136
|
"lib/baza/idquery.rb",
|
|
134
137
|
"lib/baza/index.rb",
|
|
135
138
|
"lib/baza/jdbc_driver.rb",
|
|
@@ -179,88 +182,89 @@ Gem::Specification.new do |s|
|
|
|
179
182
|
"spec/support/driver_collection.rb",
|
|
180
183
|
"spec/support/driver_columns_collection.rb",
|
|
181
184
|
"spec/support/driver_databases_collection.rb",
|
|
185
|
+
"spec/support/driver_foreign_keys_collection.rb",
|
|
182
186
|
"spec/support/driver_indexes_collection.rb",
|
|
183
187
|
"spec/support/driver_tables_collection.rb",
|
|
184
188
|
"spec/support/driver_users_collection.rb"
|
|
185
189
|
]
|
|
186
|
-
s.homepage = "http://github.com/kaspernj/baza"
|
|
187
|
-
s.licenses = ["MIT"]
|
|
188
|
-
s.rubygems_version = "2.
|
|
189
|
-
s.summary = "A database abstraction layer, model framework and database framework."
|
|
190
|
+
s.homepage = "http://github.com/kaspernj/baza".freeze
|
|
191
|
+
s.licenses = ["MIT".freeze]
|
|
192
|
+
s.rubygems_version = "2.6.8".freeze
|
|
193
|
+
s.summary = "A database abstraction layer, model framework and database framework.".freeze
|
|
190
194
|
|
|
191
195
|
if s.respond_to? :specification_version then
|
|
192
196
|
s.specification_version = 4
|
|
193
197
|
|
|
194
198
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
195
|
-
s.add_runtime_dependency(%q<
|
|
196
|
-
s.add_runtime_dependency(%q<
|
|
197
|
-
s.add_runtime_dependency(%q<
|
|
198
|
-
s.add_runtime_dependency(%q<event_handler
|
|
199
|
-
s.add_runtime_dependency(%q<simple_delegate
|
|
200
|
-
s.add_runtime_dependency(%q<string-cases
|
|
201
|
-
s.add_runtime_dependency(%q<wref
|
|
202
|
-
s.add_development_dependency(%q<
|
|
203
|
-
s.add_development_dependency(%q<
|
|
204
|
-
s.add_development_dependency(%q<
|
|
205
|
-
s.add_development_dependency(%q<
|
|
206
|
-
s.add_development_dependency(%q<
|
|
207
|
-
s.add_development_dependency(%q<jdbc-sqlite3
|
|
208
|
-
s.add_development_dependency(%q<
|
|
209
|
-
s.add_development_dependency(%q<
|
|
210
|
-
s.add_development_dependency(%q<
|
|
211
|
-
s.add_development_dependency(%q<
|
|
212
|
-
s.add_development_dependency(%q<
|
|
213
|
-
s.add_development_dependency(%q<
|
|
214
|
-
s.add_development_dependency(%q<
|
|
215
|
-
s.add_development_dependency(%q<
|
|
216
|
-
s.add_development_dependency(%q<
|
|
199
|
+
s.add_runtime_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
|
|
200
|
+
s.add_runtime_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.1"])
|
|
201
|
+
s.add_runtime_dependency(%q<datet>.freeze, ["~> 0.0.25"])
|
|
202
|
+
s.add_runtime_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
|
|
203
|
+
s.add_runtime_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
|
|
204
|
+
s.add_runtime_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
|
|
205
|
+
s.add_runtime_dependency(%q<wref>.freeze, ["~> 0.0.8"])
|
|
206
|
+
s.add_development_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
|
|
207
|
+
s.add_development_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
|
|
208
|
+
s.add_development_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
|
|
209
|
+
s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
|
|
210
|
+
s.add_development_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
|
|
211
|
+
s.add_development_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
|
|
212
|
+
s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.3"])
|
|
213
|
+
s.add_development_dependency(%q<mysql>.freeze, ["= 2.9.1"])
|
|
214
|
+
s.add_development_dependency(%q<mysql2>.freeze, ["= 0.4.2"])
|
|
215
|
+
s.add_development_dependency(%q<pg>.freeze, ["= 0.18.4"])
|
|
216
|
+
s.add_development_dependency(%q<pry>.freeze, [">= 0"])
|
|
217
|
+
s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
|
|
218
|
+
s.add_development_dependency(%q<rspec>.freeze, ["= 3.4.0"])
|
|
219
|
+
s.add_development_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
|
|
220
|
+
s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
|
|
217
221
|
else
|
|
218
|
-
s.add_dependency(%q<
|
|
219
|
-
s.add_dependency(%q<
|
|
220
|
-
s.add_dependency(%q<
|
|
221
|
-
s.add_dependency(%q<event_handler
|
|
222
|
-
s.add_dependency(%q<simple_delegate
|
|
223
|
-
s.add_dependency(%q<string-cases
|
|
224
|
-
s.add_dependency(%q<wref
|
|
225
|
-
s.add_dependency(%q<
|
|
226
|
-
s.add_dependency(%q<
|
|
227
|
-
s.add_dependency(%q<
|
|
228
|
-
s.add_dependency(%q<
|
|
229
|
-
s.add_dependency(%q<
|
|
230
|
-
s.add_dependency(%q<jdbc-sqlite3
|
|
231
|
-
s.add_dependency(%q<
|
|
232
|
-
s.add_dependency(%q<
|
|
233
|
-
s.add_dependency(%q<
|
|
234
|
-
s.add_dependency(%q<
|
|
235
|
-
s.add_dependency(%q<
|
|
236
|
-
s.add_dependency(%q<
|
|
237
|
-
s.add_dependency(%q<
|
|
238
|
-
s.add_dependency(%q<
|
|
239
|
-
s.add_dependency(%q<
|
|
222
|
+
s.add_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
|
|
223
|
+
s.add_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.1"])
|
|
224
|
+
s.add_dependency(%q<datet>.freeze, ["~> 0.0.25"])
|
|
225
|
+
s.add_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
|
|
226
|
+
s.add_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
|
|
227
|
+
s.add_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
|
|
228
|
+
s.add_dependency(%q<wref>.freeze, ["~> 0.0.8"])
|
|
229
|
+
s.add_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
|
|
230
|
+
s.add_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
|
|
231
|
+
s.add_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
|
|
232
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
|
233
|
+
s.add_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
|
|
234
|
+
s.add_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
|
|
235
|
+
s.add_dependency(%q<jeweler>.freeze, ["= 2.3.3"])
|
|
236
|
+
s.add_dependency(%q<mysql>.freeze, ["= 2.9.1"])
|
|
237
|
+
s.add_dependency(%q<mysql2>.freeze, ["= 0.4.2"])
|
|
238
|
+
s.add_dependency(%q<pg>.freeze, ["= 0.18.4"])
|
|
239
|
+
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
|
240
|
+
s.add_dependency(%q<rdoc>.freeze, [">= 0"])
|
|
241
|
+
s.add_dependency(%q<rspec>.freeze, ["= 3.4.0"])
|
|
242
|
+
s.add_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
|
|
243
|
+
s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
|
|
240
244
|
end
|
|
241
245
|
else
|
|
242
|
-
s.add_dependency(%q<
|
|
243
|
-
s.add_dependency(%q<
|
|
244
|
-
s.add_dependency(%q<
|
|
245
|
-
s.add_dependency(%q<event_handler
|
|
246
|
-
s.add_dependency(%q<simple_delegate
|
|
247
|
-
s.add_dependency(%q<string-cases
|
|
248
|
-
s.add_dependency(%q<wref
|
|
249
|
-
s.add_dependency(%q<
|
|
250
|
-
s.add_dependency(%q<
|
|
251
|
-
s.add_dependency(%q<
|
|
252
|
-
s.add_dependency(%q<
|
|
253
|
-
s.add_dependency(%q<
|
|
254
|
-
s.add_dependency(%q<jdbc-sqlite3
|
|
255
|
-
s.add_dependency(%q<
|
|
256
|
-
s.add_dependency(%q<
|
|
257
|
-
s.add_dependency(%q<
|
|
258
|
-
s.add_dependency(%q<
|
|
259
|
-
s.add_dependency(%q<
|
|
260
|
-
s.add_dependency(%q<
|
|
261
|
-
s.add_dependency(%q<
|
|
262
|
-
s.add_dependency(%q<
|
|
263
|
-
s.add_dependency(%q<
|
|
246
|
+
s.add_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
|
|
247
|
+
s.add_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.1"])
|
|
248
|
+
s.add_dependency(%q<datet>.freeze, ["~> 0.0.25"])
|
|
249
|
+
s.add_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
|
|
250
|
+
s.add_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
|
|
251
|
+
s.add_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
|
|
252
|
+
s.add_dependency(%q<wref>.freeze, ["~> 0.0.8"])
|
|
253
|
+
s.add_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
|
|
254
|
+
s.add_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
|
|
255
|
+
s.add_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
|
|
256
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
|
257
|
+
s.add_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
|
|
258
|
+
s.add_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
|
|
259
|
+
s.add_dependency(%q<jeweler>.freeze, ["= 2.3.3"])
|
|
260
|
+
s.add_dependency(%q<mysql>.freeze, ["= 2.9.1"])
|
|
261
|
+
s.add_dependency(%q<mysql2>.freeze, ["= 0.4.2"])
|
|
262
|
+
s.add_dependency(%q<pg>.freeze, ["= 0.18.4"])
|
|
263
|
+
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
|
264
|
+
s.add_dependency(%q<rdoc>.freeze, [">= 0"])
|
|
265
|
+
s.add_dependency(%q<rspec>.freeze, ["= 3.4.0"])
|
|
266
|
+
s.add_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
|
|
267
|
+
s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
|
|
264
268
|
end
|
|
265
269
|
end
|
|
266
270
|
|
|
@@ -15,6 +15,25 @@ class Baza::Driver::Mysql::Column < Baza::Column
|
|
|
15
15
|
@name
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def create_foreign_key(args)
|
|
19
|
+
fk_name = args[:name]
|
|
20
|
+
fk_name ||= "fk_#{table_name}_#{name}"
|
|
21
|
+
|
|
22
|
+
other_column = args.fetch(:column)
|
|
23
|
+
other_table = other_column.table
|
|
24
|
+
|
|
25
|
+
sql = "
|
|
26
|
+
ALTER TABLE #{@db.escape_table(table_name)}
|
|
27
|
+
ADD CONSTRAINT #{@db.escape_table(fk_name)}
|
|
28
|
+
FOREIGN KEY (#{@db.escape_table(name)})
|
|
29
|
+
REFERENCES #{@db.escape_table(other_table.name)} (#{@db.escape_column(other_column.name)})
|
|
30
|
+
"
|
|
31
|
+
|
|
32
|
+
@db.query(sql)
|
|
33
|
+
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
|
|
18
37
|
def table_name
|
|
19
38
|
@args.fetch(:table_name)
|
|
20
39
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Baza::Driver::Mysql::ForeignKey < Baza::ForeignKey
|
|
2
|
+
def initialize(args)
|
|
3
|
+
@db = args.fetch(:db)
|
|
4
|
+
|
|
5
|
+
data = args.fetch(:data)
|
|
6
|
+
|
|
7
|
+
@column_name = data.fetch(:COLUMN_NAME)
|
|
8
|
+
@name = data.fetch(:CONSTRAINT_NAME)
|
|
9
|
+
@table_name = data.fetch(:TABLE_NAME)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def drop
|
|
13
|
+
@db.query("
|
|
14
|
+
ALTER TABLE `#{@db.escape_table(table_name)}`
|
|
15
|
+
DROP FOREIGN KEY `#{@db.escape_table(name)}`
|
|
16
|
+
")
|
|
17
|
+
true
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -95,15 +95,60 @@ class Baza::Driver::Mysql::Table < Baza::Table
|
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
-
def
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
def foreign_keys(args = {})
|
|
99
|
+
sql = "
|
|
100
|
+
SELECT
|
|
101
|
+
TABLE_NAME,
|
|
102
|
+
COLUMN_NAME,
|
|
103
|
+
CONSTRAINT_NAME,
|
|
104
|
+
REFERENCED_TABLE_NAME,
|
|
105
|
+
REFERENCED_COLUMN_NAME
|
|
106
|
+
|
|
107
|
+
FROM
|
|
108
|
+
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
|
109
|
+
|
|
110
|
+
WHERE
|
|
111
|
+
REFERENCED_TABLE_SCHEMA = '#{@db.escape_database(@db.current_database_name)}' AND
|
|
112
|
+
TABLE_NAME = '#{@db.escape_table(name)}'
|
|
113
|
+
"
|
|
114
|
+
|
|
115
|
+
sql << " AND CONSTRAINT_NAME = '#{@db.escape(args.fetch(:name))}'" if args[:name]
|
|
116
|
+
|
|
117
|
+
result = [] unless block_given?
|
|
118
|
+
|
|
119
|
+
@db.query(sql) do |data|
|
|
120
|
+
foreign_key = Baza::Driver::Mysql::ForeignKey.new(
|
|
121
|
+
db: @db,
|
|
122
|
+
data: data
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
if block_given?
|
|
126
|
+
yield foreign_key
|
|
127
|
+
else
|
|
128
|
+
result << foreign_key
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
result
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def foreign_key(name)
|
|
136
|
+
foreign_keys(name: name) do |foreign_key|
|
|
137
|
+
return foreign_key
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
raise Baza::Errors::ForeignKeyNotFound, "Foreign key not found: #{name}"
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def indexes(args = nil, &blk)
|
|
144
|
+
ret = {}
|
|
101
145
|
|
|
102
146
|
sql = "SHOW INDEX FROM `#{@db.escape_table(name)}`"
|
|
103
147
|
sql << " WHERE `Key_name` = '#{@db.esc(args.fetch(:name))}'" if args && args.key?(:name)
|
|
104
148
|
|
|
105
149
|
@db.query(sql) do |d_indexes|
|
|
106
150
|
next if d_indexes[:Key_name] == "PRIMARY"
|
|
151
|
+
|
|
107
152
|
index_name = d_indexes.fetch(:Key_name)
|
|
108
153
|
obj = @indexes_list.get(index_name)
|
|
109
154
|
|
|
@@ -113,21 +158,17 @@ class Baza::Driver::Mysql::Table < Baza::Table
|
|
|
113
158
|
db: @db,
|
|
114
159
|
data: d_indexes
|
|
115
160
|
)
|
|
116
|
-
obj.columns << d_indexes.fetch(:Column_name)
|
|
117
161
|
@indexes_list[index_name] = obj
|
|
118
162
|
end
|
|
119
163
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
else
|
|
123
|
-
ret << obj
|
|
124
|
-
end
|
|
164
|
+
obj.columns << d_indexes.fetch(:Column_name) unless obj.columns.include?(d_indexes.fetch(:Column_name))
|
|
165
|
+
ret[obj.name] = obj unless ret.key?(obj.name)
|
|
125
166
|
end
|
|
126
167
|
|
|
127
|
-
if
|
|
128
|
-
|
|
168
|
+
if blk
|
|
169
|
+
ret.values.each(&blk)
|
|
129
170
|
else
|
|
130
|
-
return ret
|
|
171
|
+
return ret.values
|
|
131
172
|
end
|
|
132
173
|
end
|
|
133
174
|
|
|
@@ -8,7 +8,26 @@ class Baza::Driver::Pg::Column < Baza::Column
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def table_name
|
|
11
|
-
@data.fetch(:table_name)
|
|
11
|
+
@_table_name ||= @data.fetch(:table_name)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create_foreign_key(args)
|
|
15
|
+
fk_name = args[:name]
|
|
16
|
+
fk_name ||= "fk_#{table_name}_#{name}"
|
|
17
|
+
|
|
18
|
+
other_column = args.fetch(:column)
|
|
19
|
+
other_table = other_column.table
|
|
20
|
+
|
|
21
|
+
sql = "
|
|
22
|
+
ALTER TABLE #{@db.escape_table(table_name)}
|
|
23
|
+
ADD CONSTRAINT #{@db.escape_table(fk_name)}
|
|
24
|
+
FOREIGN KEY (#{@db.escape_table(name)})
|
|
25
|
+
REFERENCES #{@db.escape_table(other_table.name)} (#{@db.escape_column(other_column.name)})
|
|
26
|
+
"
|
|
27
|
+
|
|
28
|
+
@db.query(sql)
|
|
29
|
+
|
|
30
|
+
true
|
|
12
31
|
end
|
|
13
32
|
|
|
14
33
|
def type
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Baza::Driver::Pg::ForeignKey < Baza::ForeignKey
|
|
2
|
+
def initialize(args)
|
|
3
|
+
@db = args.fetch(:db)
|
|
4
|
+
|
|
5
|
+
data = args.fetch(:data)
|
|
6
|
+
|
|
7
|
+
@column_name = data.fetch(:column_name)
|
|
8
|
+
@name = data.fetch(:constraint_name)
|
|
9
|
+
@table_name = data.fetch(:table_name)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def drop
|
|
13
|
+
@db.query("
|
|
14
|
+
ALTER TABLE #{@db.escape_table(table_name)}
|
|
15
|
+
DROP CONSTRAINT #{@db.escape_table(name)}
|
|
16
|
+
")
|
|
17
|
+
true
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/baza/driver/pg/table.rb
CHANGED
|
@@ -49,7 +49,7 @@ class Baza::Driver::Pg::Table < Baza::Table
|
|
|
49
49
|
|
|
50
50
|
def column(name)
|
|
51
51
|
column = columns(name: name).first
|
|
52
|
-
raise Baza::Errors::ColumnNotFound unless column
|
|
52
|
+
raise Baza::Errors::ColumnNotFound, "Column not found: #{name}" unless column
|
|
53
53
|
column
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -58,6 +58,57 @@ class Baza::Driver::Pg::Table < Baza::Table
|
|
|
58
58
|
self
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
+
def foreign_keys(args = {})
|
|
62
|
+
sql = "
|
|
63
|
+
SELECT
|
|
64
|
+
tc.constraint_name,
|
|
65
|
+
tc.table_name,
|
|
66
|
+
kcu.column_name,
|
|
67
|
+
ccu.table_name AS foreign_table_name,
|
|
68
|
+
ccu.column_name AS foreign_column_name
|
|
69
|
+
|
|
70
|
+
FROM
|
|
71
|
+
information_schema.table_constraints AS tc
|
|
72
|
+
|
|
73
|
+
JOIN information_schema.key_column_usage AS kcu ON
|
|
74
|
+
tc.constraint_name = kcu.constraint_name
|
|
75
|
+
|
|
76
|
+
JOIN information_schema.constraint_column_usage AS ccu
|
|
77
|
+
ON ccu.constraint_name = tc.constraint_name
|
|
78
|
+
|
|
79
|
+
WHERE
|
|
80
|
+
constraint_type = 'FOREIGN KEY' AND
|
|
81
|
+
tc.table_name = '#{@db.escape(name)}'
|
|
82
|
+
"
|
|
83
|
+
|
|
84
|
+
sql << " AND tc.constraint_name = '#{@db.escape(args.fetch(:name))}'" if args[:name]
|
|
85
|
+
|
|
86
|
+
result = [] unless block_given?
|
|
87
|
+
|
|
88
|
+
@db.query(sql) do |data|
|
|
89
|
+
foreign_key = Baza::Driver::Pg::ForeignKey.new(
|
|
90
|
+
db: @db,
|
|
91
|
+
data: data
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
if block_given?
|
|
95
|
+
yield foreign_key
|
|
96
|
+
else
|
|
97
|
+
result << foreign_key
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
result
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def foreign_key(name)
|
|
105
|
+
foreign_keys(name: name) do |foreign_key|
|
|
106
|
+
return foreign_key
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
raise Baza::Errors::ForeignKeyNotFound, "Foreign key not found: #{name}"
|
|
110
|
+
end
|
|
111
|
+
|
|
61
112
|
def indexes(args = {})
|
|
62
113
|
where_args = {
|
|
63
114
|
tablename: name
|
data/lib/baza/errors.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
class Baza::Errors
|
|
2
2
|
class DatabaseNotFound < RuntimeError; end
|
|
3
3
|
class ColumnNotFound < RuntimeError; end
|
|
4
|
+
class ForeignKeyNotFound < RuntimeError; end
|
|
4
5
|
class IndexNotFound < RuntimeError; end
|
|
5
6
|
class UserNotFound < RuntimeError; end
|
|
6
7
|
class NotImplemented < RuntimeError; end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Baza::ForeignKey
|
|
2
|
+
include Baza::DatabaseModelFunctionality
|
|
3
|
+
|
|
4
|
+
attr_reader :column_name, :db, :name, :table_name
|
|
5
|
+
|
|
6
|
+
def column
|
|
7
|
+
@_column ||= table.column(column_name)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def table
|
|
11
|
+
@_table ||= db.tables[table_name]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_param
|
|
15
|
+
name
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -8,7 +8,7 @@ class Baza::SqlQueries::PostgresUpsertDuplicateKey
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def execute
|
|
11
|
-
if @db.commands.version.to_f >= 9.5
|
|
11
|
+
if @db.commands.version.to_f >= 9.5 && @db.commands.version.to_f <= 9.5
|
|
12
12
|
@db.query(on_conflict_sql)
|
|
13
13
|
elsif @terms.empty?
|
|
14
14
|
return insert_and_register_conflict
|
|
@@ -54,7 +54,21 @@ private
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def on_conflict_sql
|
|
57
|
-
"#{insert_sql} ON CONFLICT DO UPDATE #{update_set_sql}"
|
|
57
|
+
"#{insert_sql} ON CONFLICT (#{conflict_column_sql}) DO UPDATE #{update_set_sql}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def conflict_column_sql
|
|
61
|
+
sql = ""
|
|
62
|
+
|
|
63
|
+
first = true
|
|
64
|
+
@updates.keys.each do |column_name|
|
|
65
|
+
sql << ", " if first
|
|
66
|
+
first = false if first
|
|
67
|
+
|
|
68
|
+
sql << "'#{@db.escape_column(column_name)}'"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
sql
|
|
58
72
|
end
|
|
59
73
|
|
|
60
74
|
def insert_sql
|
|
@@ -13,6 +13,7 @@ unless RUBY_PLATFORM == "java"
|
|
|
13
13
|
it_behaves_like "a baza driver"
|
|
14
14
|
it_should_behave_like "a baza tables driver"
|
|
15
15
|
it_should_behave_like "a baza columns driver"
|
|
16
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
16
17
|
it_should_behave_like "a baza indexes driver"
|
|
17
18
|
it_should_behave_like "a baza users driver"
|
|
18
19
|
it_should_behave_like "an active record driver"
|
|
@@ -11,6 +11,7 @@ describe Baza::Driver::ActiveRecord do
|
|
|
11
11
|
it_behaves_like "a baza driver"
|
|
12
12
|
it_should_behave_like "a baza tables driver"
|
|
13
13
|
it_should_behave_like "a baza columns driver"
|
|
14
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
14
15
|
it_should_behave_like "a baza indexes driver"
|
|
15
16
|
it_should_behave_like "a baza users driver"
|
|
16
17
|
it_should_behave_like "an active record driver"
|
|
@@ -14,6 +14,7 @@ unless RUBY_PLATFORM == "java"
|
|
|
14
14
|
it_behaves_like "a baza driver"
|
|
15
15
|
it_should_behave_like "a baza tables driver"
|
|
16
16
|
it_should_behave_like "a baza columns driver"
|
|
17
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
17
18
|
it_should_behave_like "a baza indexes driver"
|
|
18
19
|
it_should_behave_like "an active record driver"
|
|
19
20
|
end
|
data/spec/drivers/mysql2_spec.rb
CHANGED
|
@@ -12,6 +12,7 @@ describe Baza::Driver::Mysql2 do
|
|
|
12
12
|
it_should_behave_like "a baza databases driver"
|
|
13
13
|
it_should_behave_like "a baza tables driver"
|
|
14
14
|
it_should_behave_like "a baza columns driver"
|
|
15
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
15
16
|
it_should_behave_like "a baza indexes driver"
|
|
16
17
|
it_should_behave_like "a baza users driver"
|
|
17
18
|
end
|
data/spec/drivers/mysql_spec.rb
CHANGED
|
@@ -12,6 +12,7 @@ describe Baza.const_get(:Driver).const_get(:Mysql) do
|
|
|
12
12
|
it_should_behave_like "a baza databases driver"
|
|
13
13
|
it_should_behave_like "a baza tables driver"
|
|
14
14
|
it_should_behave_like "a baza columns driver"
|
|
15
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
15
16
|
it_should_behave_like "a baza indexes driver"
|
|
16
17
|
it_should_behave_like "a baza users driver"
|
|
17
18
|
|
data/spec/drivers/pg_spec.rb
CHANGED
|
@@ -13,6 +13,7 @@ unless RUBY_PLATFORM == "java"
|
|
|
13
13
|
it_should_behave_like "a baza databases driver"
|
|
14
14
|
it_should_behave_like "a baza tables driver"
|
|
15
15
|
it_should_behave_like "a baza columns driver"
|
|
16
|
+
it_should_behave_like "a baza foreign keys driver"
|
|
16
17
|
it_should_behave_like "a baza indexes driver"
|
|
17
18
|
end
|
|
18
19
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
shared_examples_for "a baza foreign keys driver" do
|
|
2
|
+
let(:driver) { constant.new }
|
|
3
|
+
let(:db) { driver.db }
|
|
4
|
+
let(:posts_table) do
|
|
5
|
+
db.tables.create(
|
|
6
|
+
"posts",
|
|
7
|
+
columns: [
|
|
8
|
+
{name: "id", type: :int, autoincr: true, primarykey: true},
|
|
9
|
+
{name: "user_id", type: :int},
|
|
10
|
+
{name: "text", type: :varchar}
|
|
11
|
+
]
|
|
12
|
+
)
|
|
13
|
+
db.tables[:posts]
|
|
14
|
+
end
|
|
15
|
+
let(:users_table) do
|
|
16
|
+
db.tables.create(
|
|
17
|
+
"users",
|
|
18
|
+
columns: [
|
|
19
|
+
{name: "id", type: :int, autoincr: true, primarykey: true},
|
|
20
|
+
{name: "email", type: :varchar}
|
|
21
|
+
]
|
|
22
|
+
)
|
|
23
|
+
db.tables[:users]
|
|
24
|
+
end
|
|
25
|
+
let(:users_id_column) { users_table.column("id") }
|
|
26
|
+
let(:user_id_foreign_key) do
|
|
27
|
+
posts_table.column("user_id").create_foreign_key(
|
|
28
|
+
column: users_id_column,
|
|
29
|
+
name: "test_column_key"
|
|
30
|
+
)
|
|
31
|
+
posts_table.foreign_key("test_column_key")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
before do
|
|
35
|
+
driver.before
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
after do
|
|
39
|
+
driver.after
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "creates foreign keys" do
|
|
43
|
+
user_id_foreign_key
|
|
44
|
+
|
|
45
|
+
expect(posts_table.foreign_keys.length).to eq 1
|
|
46
|
+
expect(posts_table.foreign_key("test_column_key").name).to eq "test_column_key"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "destroys foreign keys" do
|
|
50
|
+
user_id_foreign_key.drop
|
|
51
|
+
|
|
52
|
+
expect { posts_table.foreign_key("test_column_key") }.to raise_error(Baza::Errors::ForeignKeyNotFound)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -11,7 +11,8 @@ shared_examples_for "a baza indexes driver" do
|
|
|
11
11
|
],
|
|
12
12
|
indexes: [
|
|
13
13
|
:text,
|
|
14
|
-
{name: :email, unique: true, columns: [:email]}
|
|
14
|
+
{name: :email, unique: true, columns: [:email]},
|
|
15
|
+
{name: :two_columns, columns: [:text, :email]}
|
|
15
16
|
]
|
|
16
17
|
)
|
|
17
18
|
db.tables[:test]
|
|
@@ -45,13 +46,21 @@ shared_examples_for "a baza indexes driver" do
|
|
|
45
46
|
end.to raise_error(Baza::Errors::IndexNotFound)
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
describe
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
describe Baza::Index do
|
|
50
|
+
describe "#unique?" do
|
|
51
|
+
it "returns true when it is unique" do
|
|
52
|
+
expect(test_table.index("email").unique?).to eq true
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "returns false when it isn't unique" do
|
|
56
|
+
expect(test_table.index("text").unique?).to eq false
|
|
57
|
+
end
|
|
51
58
|
end
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
describe "#columns" do
|
|
61
|
+
it "returns the correct columns" do
|
|
62
|
+
expect(test_table.index("two_columns").columns).to eq %w(text email)
|
|
63
|
+
end
|
|
55
64
|
end
|
|
56
65
|
end
|
|
57
66
|
end
|
metadata
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: baza
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.22
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kasper Johansen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-01-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: array_enumerator
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.0.
|
|
19
|
+
version: 0.0.10
|
|
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: 0.0.
|
|
26
|
+
version: 0.0.10
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: auto_autoloader
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.0.
|
|
33
|
+
version: 0.0.1
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.0.
|
|
40
|
+
version: 0.0.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: datet
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.0.
|
|
47
|
+
version: 0.0.25
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.0.
|
|
54
|
+
version: 0.0.25
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: event_handler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -109,21 +109,21 @@ dependencies:
|
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: 0.0.8
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: activerecord
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - '='
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
117
|
+
version: 4.2.5
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
122
|
- - '='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
124
|
+
version: 4.2.5
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
126
|
+
name: activerecord-jdbc-adapter
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
129
|
- - ">="
|
|
@@ -137,21 +137,21 @@ dependencies:
|
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '0'
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
140
|
+
name: best_practice_project
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
142
142
|
requirements:
|
|
143
|
-
- -
|
|
143
|
+
- - '='
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version:
|
|
145
|
+
version: 0.0.9
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
|
-
- -
|
|
150
|
+
- - '='
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version:
|
|
152
|
+
version: 0.0.9
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
154
|
+
name: bundler
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
|
157
157
|
- - ">="
|
|
@@ -165,7 +165,7 @@ dependencies:
|
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
167
|
- !ruby/object:Gem::Dependency
|
|
168
|
-
name:
|
|
168
|
+
name: jdbc-mysql
|
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
|
170
170
|
requirements:
|
|
171
171
|
- - ">="
|
|
@@ -193,131 +193,131 @@ dependencies:
|
|
|
193
193
|
- !ruby/object:Gem::Version
|
|
194
194
|
version: '0'
|
|
195
195
|
- !ruby/object:Gem::Dependency
|
|
196
|
-
name:
|
|
196
|
+
name: jeweler
|
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
|
198
198
|
requirements:
|
|
199
|
-
- -
|
|
199
|
+
- - '='
|
|
200
200
|
- !ruby/object:Gem::Version
|
|
201
|
-
version:
|
|
201
|
+
version: 2.3.3
|
|
202
202
|
type: :development
|
|
203
203
|
prerelease: false
|
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
205
|
requirements:
|
|
206
|
-
- -
|
|
206
|
+
- - '='
|
|
207
207
|
- !ruby/object:Gem::Version
|
|
208
|
-
version:
|
|
208
|
+
version: 2.3.3
|
|
209
209
|
- !ruby/object:Gem::Dependency
|
|
210
|
-
name:
|
|
210
|
+
name: mysql
|
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
|
212
212
|
requirements:
|
|
213
|
-
- -
|
|
213
|
+
- - '='
|
|
214
214
|
- !ruby/object:Gem::Version
|
|
215
|
-
version:
|
|
215
|
+
version: 2.9.1
|
|
216
216
|
type: :development
|
|
217
217
|
prerelease: false
|
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
219
219
|
requirements:
|
|
220
|
-
- -
|
|
220
|
+
- - '='
|
|
221
221
|
- !ruby/object:Gem::Version
|
|
222
|
-
version:
|
|
222
|
+
version: 2.9.1
|
|
223
223
|
- !ruby/object:Gem::Dependency
|
|
224
|
-
name:
|
|
224
|
+
name: mysql2
|
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
|
226
226
|
requirements:
|
|
227
|
-
- -
|
|
227
|
+
- - '='
|
|
228
228
|
- !ruby/object:Gem::Version
|
|
229
|
-
version:
|
|
229
|
+
version: 0.4.2
|
|
230
230
|
type: :development
|
|
231
231
|
prerelease: false
|
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
233
233
|
requirements:
|
|
234
|
-
- -
|
|
234
|
+
- - '='
|
|
235
235
|
- !ruby/object:Gem::Version
|
|
236
|
-
version:
|
|
236
|
+
version: 0.4.2
|
|
237
237
|
- !ruby/object:Gem::Dependency
|
|
238
|
-
name:
|
|
238
|
+
name: pg
|
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
|
240
240
|
requirements:
|
|
241
241
|
- - '='
|
|
242
242
|
- !ruby/object:Gem::Version
|
|
243
|
-
version:
|
|
243
|
+
version: 0.18.4
|
|
244
244
|
type: :development
|
|
245
245
|
prerelease: false
|
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
|
247
247
|
requirements:
|
|
248
248
|
- - '='
|
|
249
249
|
- !ruby/object:Gem::Version
|
|
250
|
-
version:
|
|
250
|
+
version: 0.18.4
|
|
251
251
|
- !ruby/object:Gem::Dependency
|
|
252
|
-
name:
|
|
252
|
+
name: pry
|
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
|
254
254
|
requirements:
|
|
255
|
-
- -
|
|
255
|
+
- - ">="
|
|
256
256
|
- !ruby/object:Gem::Version
|
|
257
|
-
version: 0
|
|
257
|
+
version: '0'
|
|
258
258
|
type: :development
|
|
259
259
|
prerelease: false
|
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
|
261
261
|
requirements:
|
|
262
|
-
- -
|
|
262
|
+
- - ">="
|
|
263
263
|
- !ruby/object:Gem::Version
|
|
264
|
-
version: 0
|
|
264
|
+
version: '0'
|
|
265
265
|
- !ruby/object:Gem::Dependency
|
|
266
|
-
name:
|
|
266
|
+
name: rdoc
|
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
|
268
268
|
requirements:
|
|
269
|
-
- -
|
|
269
|
+
- - ">="
|
|
270
270
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: 0
|
|
271
|
+
version: '0'
|
|
272
272
|
type: :development
|
|
273
273
|
prerelease: false
|
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
|
275
275
|
requirements:
|
|
276
|
-
- -
|
|
276
|
+
- - ">="
|
|
277
277
|
- !ruby/object:Gem::Version
|
|
278
|
-
version: 0
|
|
278
|
+
version: '0'
|
|
279
279
|
- !ruby/object:Gem::Dependency
|
|
280
|
-
name:
|
|
280
|
+
name: rspec
|
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
|
282
282
|
requirements:
|
|
283
283
|
- - '='
|
|
284
284
|
- !ruby/object:Gem::Version
|
|
285
|
-
version: 4.
|
|
285
|
+
version: 3.4.0
|
|
286
286
|
type: :development
|
|
287
287
|
prerelease: false
|
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
|
289
289
|
requirements:
|
|
290
290
|
- - '='
|
|
291
291
|
- !ruby/object:Gem::Version
|
|
292
|
-
version: 4.
|
|
292
|
+
version: 3.4.0
|
|
293
293
|
- !ruby/object:Gem::Dependency
|
|
294
|
-
name:
|
|
294
|
+
name: rubocop
|
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
|
296
296
|
requirements:
|
|
297
297
|
- - '='
|
|
298
298
|
- !ruby/object:Gem::Version
|
|
299
|
-
version: 0.0
|
|
299
|
+
version: 0.39.0
|
|
300
300
|
type: :development
|
|
301
301
|
prerelease: false
|
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
|
303
303
|
requirements:
|
|
304
304
|
- - '='
|
|
305
305
|
- !ruby/object:Gem::Version
|
|
306
|
-
version: 0.0
|
|
306
|
+
version: 0.39.0
|
|
307
307
|
- !ruby/object:Gem::Dependency
|
|
308
|
-
name:
|
|
308
|
+
name: sqlite3
|
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|
|
310
310
|
requirements:
|
|
311
|
-
- -
|
|
311
|
+
- - ">="
|
|
312
312
|
- !ruby/object:Gem::Version
|
|
313
|
-
version: 0
|
|
313
|
+
version: '0'
|
|
314
314
|
type: :development
|
|
315
315
|
prerelease: false
|
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
|
317
317
|
requirements:
|
|
318
|
-
- -
|
|
318
|
+
- - ">="
|
|
319
319
|
- !ruby/object:Gem::Version
|
|
320
|
-
version: 0
|
|
320
|
+
version: '0'
|
|
321
321
|
description: A database abstraction layer, model framework and database framework.
|
|
322
322
|
email: kj@gfish.com
|
|
323
323
|
executables: []
|
|
@@ -365,6 +365,7 @@ files:
|
|
|
365
365
|
- lib/baza/driver/mysql/commands.rb
|
|
366
366
|
- lib/baza/driver/mysql/database.rb
|
|
367
367
|
- lib/baza/driver/mysql/databases.rb
|
|
368
|
+
- lib/baza/driver/mysql/foreign_key.rb
|
|
368
369
|
- lib/baza/driver/mysql/index.rb
|
|
369
370
|
- lib/baza/driver/mysql/indexes.rb
|
|
370
371
|
- lib/baza/driver/mysql/result.rb
|
|
@@ -406,6 +407,7 @@ files:
|
|
|
406
407
|
- lib/baza/driver/pg/create_index_sql_creator.rb
|
|
407
408
|
- lib/baza/driver/pg/database.rb
|
|
408
409
|
- lib/baza/driver/pg/databases.rb
|
|
410
|
+
- lib/baza/driver/pg/foreign_key.rb
|
|
409
411
|
- lib/baza/driver/pg/index.rb
|
|
410
412
|
- lib/baza/driver/pg/indexes.rb
|
|
411
413
|
- lib/baza/driver/pg/result.rb
|
|
@@ -437,6 +439,7 @@ files:
|
|
|
437
439
|
- lib/baza/driver/sqlite3_rhodes.rb
|
|
438
440
|
- lib/baza/dump.rb
|
|
439
441
|
- lib/baza/errors.rb
|
|
442
|
+
- lib/baza/foreign_key.rb
|
|
440
443
|
- lib/baza/idquery.rb
|
|
441
444
|
- lib/baza/index.rb
|
|
442
445
|
- lib/baza/jdbc_driver.rb
|
|
@@ -486,6 +489,7 @@ files:
|
|
|
486
489
|
- spec/support/driver_collection.rb
|
|
487
490
|
- spec/support/driver_columns_collection.rb
|
|
488
491
|
- spec/support/driver_databases_collection.rb
|
|
492
|
+
- spec/support/driver_foreign_keys_collection.rb
|
|
489
493
|
- spec/support/driver_indexes_collection.rb
|
|
490
494
|
- spec/support/driver_tables_collection.rb
|
|
491
495
|
- spec/support/driver_users_collection.rb
|
|
@@ -509,7 +513,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
509
513
|
version: '0'
|
|
510
514
|
requirements: []
|
|
511
515
|
rubyforge_project:
|
|
512
|
-
rubygems_version: 2.
|
|
516
|
+
rubygems_version: 2.6.8
|
|
513
517
|
signing_key:
|
|
514
518
|
specification_version: 4
|
|
515
519
|
summary: A database abstraction layer, model framework and database framework.
|