dohmysql 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-