dohmysql 0.1.3 → 0.1.4

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.
@@ -3,4 +3,3 @@ require 'doh/mysql/connector_instance'
3
3
  require 'doh/mysql/handle'
4
4
  require 'doh/mysql/to_sql'
5
5
  require 'doh/mysql/db_date'
6
- require 'doh/mysql/unquoted'
@@ -12,7 +12,7 @@ class CacheConnector
12
12
 
13
13
  def request_handle(database = nil)
14
14
  if @handle
15
- close_handle("handle was unused for too long") if passed_timeout?
15
+ close_handle('handle was unused for too long') if passed_timeout?
16
16
  @handle = nil if @handle && @handle.closed?
17
17
  end
18
18
  @last_used = Time.now
@@ -20,7 +20,7 @@ class CacheConnector
20
20
  end
21
21
 
22
22
  def reset
23
- close_handle("reset")
23
+ close_handle('reset was called')
24
24
  end
25
25
 
26
26
  private
@@ -34,7 +34,6 @@ private
34
34
  def get_new_handle(database = nil)
35
35
  local_config = @config.dup
36
36
  local_config[:database] = database if database
37
- dohlog.info("connecting with config: #{local_config}")
38
37
  local_config.delete(:timeout)
39
38
  Handle.new(local_config)
40
39
  end
@@ -1,7 +1,5 @@
1
1
  require 'doh/current_date'
2
2
  require 'doh/mysql/db_date'
3
- require 'doh/mysql/parse'
4
- require 'doh/mysql/to_sql'
5
3
 
6
4
  module DohDb
7
5
 
@@ -13,11 +11,4 @@ def self.current_datetime_db
13
11
  Doh::current_datetime(DohDb::now)
14
12
  end
15
13
 
16
- def self.server_datetime
17
- retval = DohDb::select_field("SELECT #{DohDb::current_datetime_db.to_sql}")
18
- # if there is a fake datetime right now, will need to parse it
19
- retval = DohDb::parse_datetime(retval) if retval.is_a?(String)
20
- retval
21
- end
22
-
23
14
  end
@@ -16,6 +16,9 @@ class Handle
16
16
 
17
17
  def initialize(config)
18
18
  @config = config
19
+ log_config = @config.dup
20
+ log_config.delete(:password)
21
+ dohlog.info("creating connection with config: #{log_config}")
19
22
  @mysqlh = Mysql2::Client.new(@config)
20
23
  dohlog.info("new connection created: id #{@mysqlh.thread_id}")
21
24
  end
@@ -33,31 +33,6 @@ def self.field_exist?(table, field, database = nil)
33
33
  column_info(table, database).key?(field)
34
34
  end
35
35
 
36
- @@primary_keys = {}
37
- def self.find_primary_key(table, database = nil)
38
- if table.index('.')
39
- database = table.before('.')
40
- table = table.after('.')
41
- else
42
- database ||= DohDb::connector_instance.config[:database]
43
- end
44
-
45
- dbhash = @@primary_keys[database]
46
- if dbhash.nil?
47
- dbhash = DohDb::select_transpose("SELECT table_name, column_name FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='#{database}' AND ORDINAL_POSITION=1")
48
- raise "no information found for database #{database}" if dbhash.empty?
49
- @@primary_keys[database] = dbhash
50
- end
51
-
52
- retval = dbhash[table]
53
- raise "attempting to find_primary_key for table that doesn't exist: #{database}.#{table}" if retval.nil?
54
- retval
55
- end
56
-
57
- def self.table_exist?(table, database = nil)
58
- !find_primary_key(table, database).nil?
59
- end
60
-
61
36
  def self.field_list(table, database = nil)
62
37
  column_info(table, database).keys
63
38
  end
@@ -1,20 +1,7 @@
1
- require 'doh/mysql/writable_row'
2
- require 'doh/to_display'
3
- require 'doh/mysql/virtual'
4
- require 'sqlstmt/update'
1
+ require 'doh/mysql/abstract_row'
5
2
 
6
3
  module DohDb
7
4
 
8
- class RowDisplayProxy
9
- def initialize(row)
10
- @row = row
11
- end
12
-
13
- def method_missing(sym, *ignore_args)
14
- @row.send(sym.to_s).to_display
15
- end
16
- end
17
-
18
5
  class AbstractSmartRow < AbstractRow
19
6
  attr_accessor :table
20
7
  attr_reader :changed_keys
@@ -23,23 +10,12 @@ class AbstractSmartRow < AbstractRow
23
10
  @keys = keys.dup
24
11
  @values = values.dup
25
12
  @changed_keys = Set.new
26
- @cached_virtuals = {}
27
13
  end
28
14
 
29
15
  def initialize_copy(orig)
30
16
  @keys = @keys.dup
31
17
  @values = @values.dup
32
18
  @changed_keys = @changed_keys.dup
33
- @cached_virtuals = @cached_virtuals.dup
34
- @display_proxy = nil
35
- end
36
-
37
- def display(key = nil)
38
- if key.nil?
39
- @display_proxy ||= RowDisplayProxy.new(self)
40
- else
41
- get(key).to_display
42
- end
43
19
  end
44
20
 
45
21
  def set(key, value, flag_changed = true)
@@ -82,56 +58,14 @@ class AbstractSmartRow < AbstractRow
82
58
  @values.delete_at(index)
83
59
  end
84
60
 
85
- def db_insert
86
- newid = DohDb::insert_hash(self, @table)
87
- if newid != 0
88
- set(primary_key, newid, false)
89
- end
90
- newid
91
- end
92
-
93
- def db_update
94
- return if @changed_keys.empty?
95
- before_db_update
96
- builder = SqlStmt::Update.new.table(@table)
97
- builder.where("#{primary_key} = #{get(primary_key).to_sql}")
98
- @changed_keys.each {|key| builder.field(key, get(key).to_sql)}
99
- DohDb::query(builder)
100
- after_db_update
101
- @changed_keys.clear
102
- end
103
-
104
- protected
105
- def primary_key
106
- DohDb::find_primary_key(@table)
107
- end
108
-
109
- def before_db_update
110
- end
111
-
112
- def after_db_update
113
- end
114
-
115
61
  def guess_missing_get(key)
116
62
  return get(key) if key?(key)
117
- retval = get_virtual_field(key)
118
- raise "unknown field: #{key}" unless retval
119
- retval
63
+ raise "unknown field: #{key}"
120
64
  end
121
65
 
122
66
  def guess_missing_set(key, value)
123
67
  set(key, value)
124
68
  end
125
-
126
- def get_virtual_field(name)
127
- cached = @cached_virtuals[name]
128
- return cached if cached
129
- if idvalue = get(name + '_id')
130
- @cached_virtuals[name] = DohDb::LinkedRow.build(name, idvalue.to_i)
131
- else
132
- nil
133
- end
134
- end
135
69
  end
136
70
 
137
71
  class SmartRow < AbstractSmartRow
@@ -144,11 +78,4 @@ class SmartRow < AbstractSmartRow
144
78
  end
145
79
  end
146
80
 
147
- class CustomSmartRow < AbstractSmartRow
148
- def initialize(*args)
149
- super(*parse_initialize_args(*args))
150
- @table = self.class.default_table
151
- end
152
- end
153
-
154
81
  end
@@ -42,12 +42,6 @@ class Test_metadata_util < DohTest::TestGroup
42
42
  assert_equal('blahbla', newrow['str'])
43
43
  assert_equal('blahblahblah', row['num'])
44
44
  assert_equal('blahblahblah', row['str'])
45
-
46
- assert(DohDb::table_exist?(tbl))
47
-
48
- assert_equal('num', DohDb::find_primary_key(tbl))
49
- assert_raises(RuntimeError) { DohDb::find_primary_key(tbl, "this_database_doesnt_exist") }
50
- assert_raises(RuntimeError) { DohDb::find_primary_key("this table doesn't exist") }
51
45
  end
52
46
  end
53
47
 
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.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-14 00:00:00.000000000Z
13
+ date: 2012-03-30 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: dohroot
17
- requirement: &70154500522900 !ruby/object:Gem::Requirement
17
+ requirement: &70181797597040 !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: *70154500522900
25
+ version_requirements: *70181797597040
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: dohutil
28
- requirement: &70154500522240 !ruby/object:Gem::Requirement
28
+ requirement: &70181797596320 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.1.7
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70154500522240
36
+ version_requirements: *70181797596320
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: mysql2
39
- requirement: &70154500521540 !ruby/object:Gem::Requirement
39
+ requirement: &70181797595620 !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: *70154500521540
47
+ version_requirements: *70181797595620
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: sqlstmt
50
- requirement: &70154500520920 !ruby/object:Gem::Requirement
50
+ requirement: &70181797594820 !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: *70154500520920
58
+ version_requirements: *70181797594820
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: dohtest
61
- requirement: &70154500520300 !ruby/object:Gem::Requirement
61
+ requirement: &70181797594000 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: 0.1.7
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70154500520300
69
+ version_requirements: *70181797594000
70
70
  description: wrapper classes around low level mysql gem to provide a better interface
71
71
  email:
72
72
  - devinfo@atpsoft.com
@@ -89,15 +89,11 @@ files:
89
89
  - lib/doh/mysql/hash_row.rb
90
90
  - lib/doh/mysql/load_sql.rb
91
91
  - lib/doh/mysql/metadata_util.rb
92
- - lib/doh/mysql/parse.rb
93
92
  - lib/doh/mysql/raw_row_builder.rb
94
93
  - lib/doh/mysql/readonly_row.rb
95
94
  - lib/doh/mysql/smart_row.rb
96
95
  - lib/doh/mysql/to_sql.rb
97
96
  - lib/doh/mysql/typed_row_builder.rb
98
- - lib/doh/mysql/types.rb
99
- - lib/doh/mysql/unquoted.rb
100
- - lib/doh/mysql/virtual.rb
101
97
  - lib/doh/mysql/writable_row.rb
102
98
  - lib/doh/mysql.rb
103
99
  - test/cache_connector.dt.rb
@@ -105,12 +101,9 @@ files:
105
101
  - test/handle.dt.rb
106
102
  - test/helpers.rb
107
103
  - test/metadata_util.dt.rb
108
- - test/parse.dt.rb
109
104
  - test/readonly_row.dt.rb
110
- - test/smart_row.dt.rb
111
105
  - test/to_sql.dt.rb
112
106
  - test/typecasting.dt.rb
113
- - test/unquoted.dt.rb
114
107
  - test/writable_row.dt.rb
115
108
  - MIT-LICENSE
116
109
  homepage: https://github.com/atpsoft/dohmysql
@@ -144,11 +137,8 @@ test_files:
144
137
  - test/handle.dt.rb
145
138
  - test/helpers.rb
146
139
  - test/metadata_util.dt.rb
147
- - test/parse.dt.rb
148
140
  - test/readonly_row.dt.rb
149
- - test/smart_row.dt.rb
150
141
  - test/to_sql.dt.rb
151
142
  - test/typecasting.dt.rb
152
- - test/unquoted.dt.rb
153
143
  - test/writable_row.dt.rb
154
144
  has_rdoc:
@@ -1,36 +0,0 @@
1
- require 'bigdecimal'
2
- require 'date'
3
-
4
- module DohDb
5
-
6
- def self.parse_bool(str)
7
- if str == '0'
8
- false
9
- elsif str == '1'
10
- true
11
- else
12
- raise ArgumentError.new("unexpected value: " + str)
13
- end
14
- end
15
-
16
- def self.parse_datetime(str)
17
- raise ArgumentError.new("unexpected value: " + str) unless str.size == 19
18
- return nil if str == '0000-00-00 00:00:00'
19
- DateTime.parse(str)
20
- end
21
-
22
- def self.parse_date(str)
23
- raise ArgumentError.new("unexpected value: " + str) unless str.size == 10
24
- return nil if str == '0000-00-00'
25
- Date.new(str[0..3].to_i, str[5..6].to_i, str[8..9].to_i)
26
- end
27
-
28
- def self.parse_decimal(str)
29
- BigDecimal(str)
30
- end
31
-
32
- def self.parse_int(str)
33
- str.to_i
34
- end
35
-
36
- end
@@ -1,12 +0,0 @@
1
- module DohDb
2
-
3
- @@row_types = {}
4
- def self.register_row_type(table, klass)
5
- @@row_types[table] = klass
6
- end
7
-
8
- def self.find_row_type(table)
9
- @@row_types[table]
10
- end
11
-
12
- end
@@ -1,17 +0,0 @@
1
- module DohDb
2
-
3
- class Unquoted < String
4
- def to_sql
5
- to_s
6
- end
7
- end
8
-
9
- def self.unquoted(str)
10
- Unquoted.new(str)
11
- end
12
-
13
- NOW = Unquoted.new('NOW()').freeze
14
- TODAY = Unquoted.new('CURDATE()').freeze
15
- NULL = Unquoted.new('NULL').freeze
16
-
17
- end
@@ -1,17 +0,0 @@
1
- require 'doh/mysql/metadata_util'
2
- require 'doh/mysql/readonly_row'
3
- require 'doh/mysql/types'
4
-
5
- module DohDb
6
-
7
- class LinkedRow
8
- def self.build(field, idvalue)
9
- return ReadOnlyRow.new([], []) if idvalue.to_i == 0
10
- table = field.sub(/_id/, '')
11
- table = table.rafter('_') unless DohDb::table_exist?(table)
12
- raise "unable to determine child table name for field #{field}" unless DohDb::table_exist?(table)
13
- DohDb::select_row("SELECT * FROM #{table} WHERE #{DohDb::find_primary_key(table)} = #{idvalue}", DohDb::find_row_type(table) || :smart)
14
- end
15
- end
16
-
17
- end
@@ -1,39 +0,0 @@
1
- require 'doh/mysql/parse'
2
-
3
- module DohDb
4
-
5
- class Test_Parse < DohTest::TestGroup
6
- def test_bool
7
- assert_equal(false, DohDb::parse_bool('0'))
8
- assert_equal(true, DohDb::parse_bool('1'))
9
- assert_raises(ArgumentError) {DohDb::parse_bool('blah')}
10
- end
11
-
12
- def test_date
13
- assert_raises(ArgumentError) {DohDb::parse_date('blah')}
14
- assert_equal(Date.new(2008,2,14), DohDb::parse_date('2008-02-14'))
15
- assert_raises(ArgumentError) {DohDb::parse_date('20080214')}
16
- assert_not_equal(Date.new(2008,2,14), DohDb::parse_date('2008-02-15'))
17
- assert_equal(nil, DohDb::parse_date('0000-00-00'))
18
- end
19
-
20
- def test_datetime
21
- assert_raises(ArgumentError) {DohDb::parse_date('blah')}
22
- assert_raises(ArgumentError) {DohDb::parse_datetime('zzzzzzzzzzzzzzzzzzz')}
23
- assert_equal(DateTime.new(2008,2,14,10,20,30), DohDb::parse_datetime('2008-02-14 10:20:30'))
24
- assert_not_equal(DateTime.new(2008,2,14,10,20,30), DohDb::parse_datetime('2008-02-14 10:20:31'))
25
- assert_equal(nil, DohDb::parse_datetime('0000-00-00 00:00:00'))
26
- end
27
-
28
- def test_decimal
29
- assert_equal(BigDecimal.new('3.14'), DohDb::parse_decimal('3.14'))
30
- assert_equal(BigDecimal.new('0.0'), DohDb::parse_decimal('sjdkflsdjl'))
31
- end
32
-
33
- def test_int
34
- assert_equal(3, DohDb::parse_int('3'))
35
- assert_equal(0, DohDb::parse_int('sjdkflsdjl'))
36
- end
37
- end
38
-
39
- end
@@ -1,21 +0,0 @@
1
- require 'doh/mysql/smart_row'
2
-
3
- module DohDb
4
-
5
- class Test_SmartRow < DohTest::TestGroup
6
- def test_display
7
- row = SmartRow.new(['flag'], [true])
8
- assert_equal('', row.display('this_field_doesnt_exist'))
9
- assert_raises(RuntimeError) { row.display.this_field_doesnt_exist }
10
- assert_equal('yes', row.display('flag'))
11
- assert_equal('yes', row.display.flag)
12
- row2 = row.dup
13
- assert_equal(true, row2.flag)
14
- row2.flag = false
15
- assert_equal(false, row2.flag)
16
- assert_equal(true, row.flag)
17
- assert_raises(RuntimeError) { row.this_field_doesnt_exist }
18
- end
19
- end
20
-
21
- end
@@ -1,16 +0,0 @@
1
- require 'doh/mysql/unquoted'
2
-
3
- module DohDb
4
-
5
- class Test_Unquoted < DohTest::TestGroup
6
- def test_stuff
7
- assert_equal('', Unquoted.new)
8
- assert_equal('blah', Unquoted.new('blah'))
9
- assert_equal('blah', Unquoted.new('blah').to_s)
10
- assert_equal('blah', Unquoted.new('blah').to_sql)
11
- assert_equal('SELECT * FROM blah WHERE smoe = NULL', "SELECT * FROM blah WHERE smoe = #{DohDb::NULL.to_sql}")
12
- end
13
- end
14
-
15
- end
16
-