baza 0.0.24 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/baza.gemspec +4 -2
- data/lib/baza/commands/importer.rb +31 -0
- data/lib/baza/database.rb +8 -0
- data/lib/baza/driver/pg/table.rb +18 -0
- 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/active_record_sqlite3_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/drivers/sqlite3_spec.rb +1 -0
- data/spec/support/driver_importer_collection.rb +38 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a08442b27108efbaf692c8672da32fb95e0fb554
|
4
|
+
data.tar.gz: f975c643812141118d9767aaea21b265143a1ca8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b82757ce77e2333b61a881c73c2ef0b0a384d2ada12376caa84e749c887608297f16816a958b56d095e5d3470d5bad693b9d429264466361eb4fa6d82848471
|
7
|
+
data.tar.gz: 661c572c592445928abd4c1dd9d23f38d8b6275abfd4e3646dff24adc7d6fb4ae91cc790d04893558d20d2670288123d05a0d9060b3487783098c5c666810c79
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.25
|
data/baza.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
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.25 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "baza".freeze
|
9
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.25"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
|
|
38
38
|
"lib/baza/cloner.rb",
|
39
39
|
"lib/baza/column.rb",
|
40
40
|
"lib/baza/commands.rb",
|
41
|
+
"lib/baza/commands/importer.rb",
|
41
42
|
"lib/baza/commands/select.rb",
|
42
43
|
"lib/baza/database.rb",
|
43
44
|
"lib/baza/database_model.rb",
|
@@ -185,6 +186,7 @@ Gem::Specification.new do |s|
|
|
185
186
|
"spec/support/driver_columns_collection.rb",
|
186
187
|
"spec/support/driver_databases_collection.rb",
|
187
188
|
"spec/support/driver_foreign_keys_collection.rb",
|
189
|
+
"spec/support/driver_importer_collection.rb",
|
188
190
|
"spec/support/driver_indexes_collection.rb",
|
189
191
|
"spec/support/driver_tables_collection.rb",
|
190
192
|
"spec/support/driver_users_collection.rb"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Baza::Commands::Importer
|
2
|
+
def initialize(args)
|
3
|
+
@db = args.fetch(:db)
|
4
|
+
@debug = args[:debug]
|
5
|
+
@io = args.fetch(:io)
|
6
|
+
end
|
7
|
+
|
8
|
+
def execute
|
9
|
+
sql = ""
|
10
|
+
|
11
|
+
@io.each_line do |line|
|
12
|
+
next if line.strip.blank?
|
13
|
+
next if line.start_with?("--")
|
14
|
+
|
15
|
+
debug "Add line to SQL: #{line}" if @debug
|
16
|
+
sql << line
|
17
|
+
|
18
|
+
next unless line.end_with?(";\n")
|
19
|
+
|
20
|
+
debug "Execute SQL: #{sql}" if @debug
|
21
|
+
@db.query(sql)
|
22
|
+
sql = ""
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def debug(message)
|
29
|
+
puts message if @debug
|
30
|
+
end
|
31
|
+
end
|
data/lib/baza/database.rb
CHANGED
@@ -11,6 +11,14 @@ class Baza::Database
|
|
11
11
|
@name_was = @name
|
12
12
|
end
|
13
13
|
|
14
|
+
def import_file!(path)
|
15
|
+
File.open(path, "r") do |io|
|
16
|
+
use do
|
17
|
+
Baza::Commands::Importer.new(db: @db, io: io).execute
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
14
22
|
def tables(args = {})
|
15
23
|
list_args = {database: name}
|
16
24
|
list_args[:name] = args.fetch(:name) if args[:name]
|
data/lib/baza/driver/pg/table.rb
CHANGED
@@ -13,6 +13,24 @@ class Baza::Driver::Pg::Table < Baza::Table
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def data
|
17
|
+
ret = {
|
18
|
+
name: name,
|
19
|
+
columns: [],
|
20
|
+
indexes: []
|
21
|
+
}
|
22
|
+
|
23
|
+
columns do |column|
|
24
|
+
ret[:columns] << column.data
|
25
|
+
end
|
26
|
+
|
27
|
+
indexes do |index|
|
28
|
+
ret[:indexes] << index.data
|
29
|
+
end
|
30
|
+
|
31
|
+
ret
|
32
|
+
end
|
33
|
+
|
16
34
|
def database_name
|
17
35
|
@data.fetch(:table_catalog)
|
18
36
|
end
|
data/spec/drivers/mysql2_spec.rb
CHANGED
data/spec/drivers/mysql_spec.rb
CHANGED
@@ -15,6 +15,7 @@ describe Baza.const_get(:Driver).const_get(:Mysql) do
|
|
15
15
|
it_should_behave_like "a baza foreign keys driver"
|
16
16
|
it_should_behave_like "a baza indexes driver"
|
17
17
|
it_should_behave_like "a baza users driver"
|
18
|
+
it_should_behave_like "a baza importer driver"
|
18
19
|
|
19
20
|
it "should dump to sqlite3" do
|
20
21
|
require "info_sqlite3"
|
data/spec/drivers/pg_spec.rb
CHANGED
@@ -12,6 +12,7 @@ describe Baza::Driver::Sqlite3 do
|
|
12
12
|
it_should_behave_like "a baza tables driver"
|
13
13
|
it_should_behave_like "a baza columns driver"
|
14
14
|
it_should_behave_like "a baza indexes driver"
|
15
|
+
it_should_behave_like "a baza importer driver"
|
15
16
|
|
16
17
|
it "should copy database structure and data" do
|
17
18
|
require "info_sqlite3"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
shared_examples_for "a baza importer driver" do
|
2
|
+
let(:driver) { constant.new(debug: false) }
|
3
|
+
let(:db) { driver.db }
|
4
|
+
let(:test_table) do
|
5
|
+
db.tables.create(
|
6
|
+
"test",
|
7
|
+
columns: [
|
8
|
+
{name: "id", type: :int, autoincr: true, primarykey: true},
|
9
|
+
{name: "text", type: :varchar}
|
10
|
+
]
|
11
|
+
)
|
12
|
+
db.tables[:test]
|
13
|
+
end
|
14
|
+
|
15
|
+
before do
|
16
|
+
driver.before
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
driver.after
|
21
|
+
end
|
22
|
+
|
23
|
+
it "imports sql" do
|
24
|
+
test_table
|
25
|
+
|
26
|
+
io = StringIO.new
|
27
|
+
dumper = Baza::Dump.new(db: db)
|
28
|
+
dumper.dump(io)
|
29
|
+
io.rewind
|
30
|
+
|
31
|
+
test_table.drop
|
32
|
+
|
33
|
+
importer = Baza::Commands::Importer.new(db: db, io: io)
|
34
|
+
importer.execute
|
35
|
+
|
36
|
+
expect(db.tables[:test].name).to eq "test"
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kasper Johansen
|
@@ -345,6 +345,7 @@ files:
|
|
345
345
|
- lib/baza/cloner.rb
|
346
346
|
- lib/baza/column.rb
|
347
347
|
- lib/baza/commands.rb
|
348
|
+
- lib/baza/commands/importer.rb
|
348
349
|
- lib/baza/commands/select.rb
|
349
350
|
- lib/baza/database.rb
|
350
351
|
- lib/baza/database_model.rb
|
@@ -492,6 +493,7 @@ files:
|
|
492
493
|
- spec/support/driver_columns_collection.rb
|
493
494
|
- spec/support/driver_databases_collection.rb
|
494
495
|
- spec/support/driver_foreign_keys_collection.rb
|
496
|
+
- spec/support/driver_importer_collection.rb
|
495
497
|
- spec/support/driver_indexes_collection.rb
|
496
498
|
- spec/support/driver_tables_collection.rb
|
497
499
|
- spec/support/driver_users_collection.rb
|