dohmysql 0.1.5 → 0.1.6
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.
- data/bin/makedb +1 -1
- data/lib/doh/mysql/connector_instance.rb +3 -67
- data/lib/doh/mysql/connector_util.rb +1 -1
- data/lib/doh/mysql/current_date.rb +4 -4
- data/lib/doh/mysql/database_creator.rb +5 -5
- data/lib/doh/mysql/handle.rb +2 -2
- data/lib/doh/mysql/load_sql.rb +1 -1
- data/lib/doh/mysql/metadata_util.rb +4 -4
- data/test/connector_instance.dt.rb +16 -16
- data/test/helpers.rb +1 -1
- data/test/metadata_util.dt.rb +5 -5
- metadata +11 -11
data/bin/makedb
CHANGED
@@ -5,7 +5,7 @@ require 'doh/mysql/database_creator'
|
|
5
5
|
|
6
6
|
opts = Doh::Options.new(
|
7
7
|
{'drop_first' => [false, "-z", "--drop_first", "if true, will drop the database or tables before creating"] \
|
8
|
-
,'database' => [Doh
|
8
|
+
,'database' => [Doh.config[:default_database], "-d", "--database <database>", "name of the source database -- defaults to Doh.config[:default_database], currently '#{Doh.config[:default_database]}'"] \
|
9
9
|
,'all' => [false, "-a", "--all", "create all databases"] \
|
10
10
|
,'target' => [nil, "-g", "--target <database>", "name of the target database -- defaults to same as source"] \
|
11
11
|
,'tables' => [nil, "-t", "--tables <tables>", "comma-delimited list of tables to create; if specified, no databases are dropped or created"]
|
@@ -8,76 +8,12 @@ def self.connector_instance
|
|
8
8
|
@@connector_instance
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.request_handle
|
12
|
-
connector_instance.request_handle
|
13
11
|
end
|
14
12
|
|
15
|
-
|
16
|
-
request_handle.query(statement)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.update(statement)
|
20
|
-
request_handle.update(statement)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.update_row(statement)
|
24
|
-
request_handle.update_row(statement)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.update_hash(hash, table, primary_key_value, primary_key_name)
|
28
|
-
request_handle.update_hash(hash, table, primary_key_value, primary_key_name)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.insert(statement)
|
32
|
-
request_handle.insert(statement)
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.insert_hash(hash, table, quote_strings = true)
|
36
|
-
request_handle.insert_hash(hash, table, quote_strings)
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.insert_ignore_hash(hash, table, quote_strings = true)
|
40
|
-
request_handle.insert_ignore_hash(hash, table, quote_strings)
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.replace_hash(hash, table, quote_strings = true)
|
44
|
-
request_handle.replace_hash(hash, table, quote_strings)
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.select(statement, row_builder = nil)
|
48
|
-
request_handle.select(statement, row_builder)
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.select_row(statement, row_builder = nil)
|
52
|
-
request_handle.select_row(statement, row_builder)
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.select_optional_row(statement, row_builder = nil)
|
56
|
-
request_handle.select_optional_row(statement, row_builder)
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.select_field(statement, row_builder = nil)
|
60
|
-
request_handle.select_field(statement, row_builder)
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.select_optional_field(statement, row_builder = nil)
|
64
|
-
request_handle.select_optional_field(statement, row_builder)
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.select_transpose(statement, row_builder = nil)
|
68
|
-
request_handle.select_transpose(statement, row_builder)
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.select_values(statement, row_builder = nil)
|
72
|
-
request_handle.select_values(statement, row_builder)
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.select_list(statement, row_builder = nil)
|
76
|
-
request_handle.select_list(statement, row_builder)
|
77
|
-
end
|
13
|
+
module Doh
|
78
14
|
|
79
|
-
def self.
|
80
|
-
request_handle
|
15
|
+
def self.db
|
16
|
+
DohDb.connector_instance.request_handle
|
81
17
|
end
|
82
18
|
|
83
19
|
end
|
@@ -15,7 +15,7 @@ def self.drop_create_and_connect(connector, new_default_database = nil)
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.reconfigure_connector(cfg, connector = nil)
|
18
|
-
connector ||= DohDb
|
18
|
+
connector ||= DohDb.connector_instance
|
19
19
|
connector.reset
|
20
20
|
connector.host = cfg['host'] if cfg.key?('host')
|
21
21
|
connector.username = cfg['username'] if cfg.key?('username')
|
@@ -3,12 +3,12 @@ require 'doh/mysql/db_date'
|
|
3
3
|
|
4
4
|
module DohDb
|
5
5
|
|
6
|
-
def self.
|
7
|
-
Doh
|
6
|
+
def self.current_date
|
7
|
+
Doh.current_date(DohDb.today)
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.
|
11
|
-
Doh
|
10
|
+
def self.current_datetime
|
11
|
+
Doh.current_datetime(DohDb.now)
|
12
12
|
end
|
13
13
|
|
14
14
|
end
|
@@ -7,8 +7,8 @@ module DohDb
|
|
7
7
|
|
8
8
|
class DatabaseCreator
|
9
9
|
def initialize(sqlfiles_directory = nil, connector = nil)
|
10
|
-
@sqlfiles_directory = sqlfiles_directory || File.join(Doh
|
11
|
-
@connector = connector || DohDb
|
10
|
+
@sqlfiles_directory = sqlfiles_directory || File.join(Doh.root, 'database')
|
11
|
+
@connector = connector || DohDb.connector_instance
|
12
12
|
@include_scripts = true
|
13
13
|
end
|
14
14
|
|
@@ -66,12 +66,12 @@ private
|
|
66
66
|
files = [sql_filename(database, 'tables', table_name)]
|
67
67
|
inserts_file = sql_filename(database, 'insert_sql', table_name)
|
68
68
|
files.push(inserts_file) if File.exist?(inserts_file)
|
69
|
-
DohDb
|
69
|
+
DohDb.load_sql(dbh.config, files)
|
70
70
|
end
|
71
71
|
|
72
72
|
def create_view(dbh, database, view_name, drop_first)
|
73
73
|
dbh.query("DROP VIEW IF EXISTS #{view_name}") if drop_first
|
74
|
-
DohDb
|
74
|
+
DohDb.load_sql(dbh.config, [sql_filename(database, 'views', view_name)])
|
75
75
|
end
|
76
76
|
|
77
77
|
def create_one_database(dbh, dest_db, source_db, drop_first)
|
@@ -84,7 +84,7 @@ private
|
|
84
84
|
@connector.config[:database] = dest_db
|
85
85
|
|
86
86
|
files = find_files(source_db, 'tables') + find_files(source_db, 'insert_sql') + view_files(source_db)
|
87
|
-
DohDb
|
87
|
+
DohDb.load_sql(@connector.config, files)
|
88
88
|
return unless @include_scripts
|
89
89
|
find_files(source_db, 'insert_scripts', '.rb').each do |filename|
|
90
90
|
dohlog.info("loading file: #{filename}")
|
data/lib/doh/mysql/handle.rb
CHANGED
@@ -130,10 +130,10 @@ class Handle
|
|
130
130
|
if field_count < 2
|
131
131
|
raise UnexpectedQueryResult, "must select at least 2 fields in order to transpose"
|
132
132
|
elsif field_count == 2
|
133
|
-
Doh
|
133
|
+
Doh.array_to_hash(rows) { |row| [row.at(0), row.at(1)] }
|
134
134
|
else
|
135
135
|
key_field = rows.first.keys.first
|
136
|
-
Doh
|
136
|
+
Doh.array_to_hash(rows) do |row|
|
137
137
|
value = row.to_h
|
138
138
|
value.delete(key_field)
|
139
139
|
[row.at(0), value]
|
data/lib/doh/mysql/load_sql.rb
CHANGED
@@ -8,7 +8,7 @@ end
|
|
8
8
|
|
9
9
|
def self.load_sql(dbconfig, filenames)
|
10
10
|
mysqlcmd = 'mysql' + mysql_arg(dbconfig[:host], 'h') + mysql_arg(dbconfig[:username], 'u') + mysql_arg(dbconfig[:password], 'p') + ' ' + dbconfig[:database]
|
11
|
-
io = IO
|
11
|
+
io = IO.popen(mysqlcmd, 'r+')
|
12
12
|
dohlog.debug("loading sql file: " + filenames.first) if filenames.size == 1
|
13
13
|
filenames.each do |elem|
|
14
14
|
open(elem) {|file| io << file.read}
|
@@ -4,11 +4,11 @@ module DohDb
|
|
4
4
|
|
5
5
|
@@cached_column_info = {}
|
6
6
|
def self.column_info(table, database = nil)
|
7
|
-
database ||= DohDb
|
7
|
+
database ||= DohDb.connector_instance.config[:database]
|
8
8
|
lookup_str = database + '.' + table
|
9
9
|
return @@cached_column_info[lookup_str] if @@cached_column_info[lookup_str]
|
10
10
|
stmt = "SELECT column_name, is_nullable, data_type, character_maximum_length, numeric_scale, column_type FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='#{database}' AND TABLE_NAME='#{table}'"
|
11
|
-
@@cached_column_info[lookup_str] =
|
11
|
+
@@cached_column_info[lookup_str] = Doh.db.select_transpose(stmt)
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.field_character_size(table, field, database = nil)
|
@@ -39,9 +39,9 @@ end
|
|
39
39
|
|
40
40
|
@@tables_by_database = {}
|
41
41
|
def self.all_tables(database = nil)
|
42
|
-
database ||= DohDb
|
42
|
+
database ||= DohDb.connector_instance.config[:database]
|
43
43
|
@@tables_by_database[database] ||
|
44
|
-
@@tables_by_database[database] ||=
|
44
|
+
@@tables_by_database[database] ||= Doh.db.select_list("SELECT table_name FROM information_schema.tables WHERE table_schema = '#{database}'")
|
45
45
|
end
|
46
46
|
|
47
47
|
end
|
@@ -6,26 +6,26 @@ module DohDb
|
|
6
6
|
class Test_ConnectorInstance < DohTest::TestGroup
|
7
7
|
def test_stuff
|
8
8
|
init_global_connector
|
9
|
-
|
10
|
-
assert_equal(1,
|
11
|
-
assert_equal(2,
|
12
|
-
assert_equal(1,
|
13
|
-
assert_equal(BigDecimal('10.80'),
|
14
|
-
assert_raises(UnexpectedQueryResult) {
|
15
|
-
assert_equal(nil,
|
16
|
-
assert_raises(UnexpectedQueryResult){
|
17
|
-
assert_equal(nil,
|
18
|
-
assert_raises(UnexpectedQueryResult) {
|
19
|
-
assert_equal(1,
|
20
|
-
assert_raises(Mysql2::Error){
|
9
|
+
Doh.db.query("CREATE TEMPORARY TABLE #{tbl} (id INT UNSIGNED AUTO_INCREMENT NOT NULL KEY, value INT NOT NULL DEFAULT 0, created_on DATE, created_at DATETIME, money DECIMAL(7,2) NOT NULL DEFAULT 0)")
|
10
|
+
assert_equal(1, Doh.db.insert("INSERT INTO #{tbl} (id, created_on, created_at, money) VALUES (null, CURDATE(), '2007-01-01 10:30:05', 10.5)"))
|
11
|
+
assert_equal(2, Doh.db.insert("INSERT INTO #{tbl} (id, created_on) VALUES (null, 0)"))
|
12
|
+
assert_equal(1, Doh.db.update("UPDATE #{tbl} SET money = 10.8 WHERE id = 1"))
|
13
|
+
assert_equal(BigDecimal('10.80'), Doh.db.select_field("SELECT money FROM #{tbl} WHERE id = 1"))
|
14
|
+
assert_raises(UnexpectedQueryResult) {Doh.db.select_row("SELECT * FROM #{tbl} WHERE id = 7")}
|
15
|
+
assert_equal(nil, Doh.db.select_optional_row("SELECT * FROM #{tbl} WHERE id = 7"))
|
16
|
+
assert_raises(UnexpectedQueryResult){Doh.db.select_optional_row("SELECT * FROM #{tbl} WHERE id < 3")}
|
17
|
+
assert_equal(nil, Doh.db.select_optional_field("SELECT money FROM #{tbl} WHERE id = 7"))
|
18
|
+
assert_raises(UnexpectedQueryResult) {Doh.db.select_field("SELECT money FROM #{tbl} WHERE id = 7")}
|
19
|
+
assert_equal(1, Doh.db.update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 1"))
|
20
|
+
assert_raises(Mysql2::Error){Doh.db.query("some invalid sql here")}
|
21
21
|
# TODO: re-enable
|
22
22
|
# assert(DohTest::pop_error)
|
23
|
-
assert_raises(UnexpectedQueryResult) {
|
24
|
-
onerow =
|
23
|
+
assert_raises(UnexpectedQueryResult) {Doh.db.update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 7")}
|
24
|
+
onerow = Doh.db.select_row("SELECT * FROM #{tbl} WHERE id = 1")
|
25
25
|
assert_equal(1, onerow['id'])
|
26
|
-
onerow =
|
26
|
+
onerow = Doh.db.select_optional_row("SELECT * FROM #{tbl} WHERE id = 1")
|
27
27
|
assert_equal(1, onerow['id'])
|
28
|
-
rows =
|
28
|
+
rows = Doh.db.select("SELECT * FROM #{tbl}")
|
29
29
|
rows.each {|row| assert(row['id'] != 0)}
|
30
30
|
end
|
31
31
|
end
|
data/test/helpers.rb
CHANGED
@@ -23,7 +23,7 @@ module InternalTestHelpers
|
|
23
23
|
def init_global_connector
|
24
24
|
require 'doh/mysql/connector_instance'
|
25
25
|
require 'doh/mysql/cache_connector'
|
26
|
-
DohDb
|
26
|
+
DohDb.set_connector_instance(DohDb::CacheConnector.new(dbcfg))
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
data/test/metadata_util.dt.rb
CHANGED
@@ -20,7 +20,7 @@ class Test_metadata_util < DohTest::TestGroup
|
|
20
20
|
def test_stuff
|
21
21
|
dbh = get_dbh
|
22
22
|
dbh.query("CREATE TABLE #{tbl} (num INT, str CHAR(7))")
|
23
|
-
column_info = DohDb
|
23
|
+
column_info = DohDb.column_info(tbl)
|
24
24
|
info = column_info['str']
|
25
25
|
assert_equal('char', info['data_type'])
|
26
26
|
assert_equal(7, info['character_maximum_length'])
|
@@ -28,16 +28,16 @@ class Test_metadata_util < DohTest::TestGroup
|
|
28
28
|
assert_equal('int', info['data_type'])
|
29
29
|
assert_equal(nil, info['character_maximum_length'])
|
30
30
|
|
31
|
-
assert_equal(7, DohDb
|
32
|
-
assert_equal(nil, DohDb
|
31
|
+
assert_equal(7, DohDb.field_character_size(tbl, 'str'))
|
32
|
+
assert_equal(nil, DohDb.field_character_size(tbl, 'num'))
|
33
33
|
|
34
34
|
row = {'num' => 'blahblahblah', 'str' => 'blahblahblah'}
|
35
|
-
DohDb
|
35
|
+
DohDb.chop_character_fields!(tbl, row)
|
36
36
|
assert_equal('blahblahblah', row['num'])
|
37
37
|
assert_equal('blahbla', row['str'])
|
38
38
|
|
39
39
|
row = {'num' => 'blahblahblah', 'str' => 'blahblahblah'}
|
40
|
-
newrow = DohDb
|
40
|
+
newrow = DohDb.chop_character_fields(tbl, row)
|
41
41
|
assert_equal('blahblahblah', newrow['num'])
|
42
42
|
assert_equal('blahbla', newrow['str'])
|
43
43
|
assert_equal('blahblahblah', row['num'])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dohmysql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ date: 2012-03-30 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: dohroot
|
17
|
-
requirement: &
|
17
|
+
requirement: &70363389961120 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70363389961120
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: dohutil
|
28
|
-
requirement: &
|
28
|
+
requirement: &70363389960520 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.1.8
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70363389960520
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: mysql2
|
39
|
-
requirement: &
|
39
|
+
requirement: &70363389959920 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 0.3.11
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70363389959920
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: sqlstmt
|
50
|
-
requirement: &
|
50
|
+
requirement: &70363389959340 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 0.1.1
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70363389959340
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: dohtest
|
61
|
-
requirement: &
|
61
|
+
requirement: &70363389933500 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: 0.1.8
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70363389933500
|
70
70
|
description: wrapper classes around low level mysql gem to provide a better interface
|
71
71
|
email:
|
72
72
|
- devinfo@atpsoft.com
|