activerecord-simpledb-adapter 0.1.0 → 0.1.1
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/README.md
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{activerecord-simpledb-adapter}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ilia Ablamonov", "Alex Gorkunov", "Cloud Castle Inc."]
|
12
|
-
s.date = %q{2011-01-
|
12
|
+
s.date = %q{2011-01-17}
|
13
13
|
s.email = %q{ilia@flamefork.ru}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
@@ -128,7 +128,7 @@ module ActiveRecord
|
|
128
128
|
def mount_sql_and_params(klass, table_name, attribute, value) #:nodoc:
|
129
129
|
column = klass.columns_hash[attribute.to_s]
|
130
130
|
|
131
|
-
sql_attribute = "#{
|
131
|
+
sql_attribute = "#{klass.connection.quote_column_name(column.db_column_name)}"
|
132
132
|
sql = "#{sql_attribute} = ?"
|
133
133
|
if value.nil?
|
134
134
|
[sql, [value]]
|
@@ -191,6 +191,8 @@ module ActiveRecord
|
|
191
191
|
end
|
192
192
|
|
193
193
|
def unquote_number value
|
194
|
+
return nil if value.nil?
|
195
|
+
|
194
196
|
case sql_type
|
195
197
|
when :integer then
|
196
198
|
value.to_i - number_shift
|
@@ -275,6 +277,14 @@ module ActiveRecord
|
|
275
277
|
super
|
276
278
|
end
|
277
279
|
end
|
280
|
+
|
281
|
+
def quote_column_name(column_name)
|
282
|
+
"`#{column_name}`"
|
283
|
+
end
|
284
|
+
|
285
|
+
def quote_table_name(table_name)
|
286
|
+
table_name
|
287
|
+
end
|
278
288
|
#=======================================
|
279
289
|
|
280
290
|
attr_reader :domain_name
|
@@ -398,7 +408,7 @@ module ActiveRecord
|
|
398
408
|
end
|
399
409
|
|
400
410
|
def get_collection_column_and_name sql
|
401
|
-
if sql.match
|
411
|
+
if sql.match /`?(#{@@ccn.values.join("|")})`?\s*=\s*'(.*?)'/
|
402
412
|
$2
|
403
413
|
else
|
404
414
|
raise PreparedStatementInvalid, "collection column '#{@@ccn.values.join(" or ")}' not found in the WHERE section in query"
|
@@ -40,7 +40,7 @@ module Arel
|
|
40
40
|
o.cores.first.wheres << SqlLiteral.new("#{attr} IS NOT NULL")
|
41
41
|
end
|
42
42
|
collection = o.cores.first.froms.name
|
43
|
-
o.cores.first.wheres << SqlLiteral.new("
|
43
|
+
o.cores.first.wheres << SqlLiteral.new("`#{@connection.collection_column_name(collection)}` = #{quote(collection)}")
|
44
44
|
o.cores.first.froms = Table.new @connection.domain_name
|
45
45
|
super
|
46
46
|
end
|
@@ -63,12 +63,14 @@ module Arel
|
|
63
63
|
|
64
64
|
def visit_Arel_Nodes_Assignment o
|
65
65
|
right = o.right ? hash_value_quote(o.right, o.left.column) : nil
|
66
|
-
|
66
|
+
left = o.left.column.name
|
67
|
+
{left => right}
|
67
68
|
end
|
68
69
|
|
69
70
|
def visit_Arel_Nodes_Equality o
|
70
71
|
right = o.right ? hash_value_quote(o.right, o.left.column) : nil
|
71
|
-
|
72
|
+
left = o.left.column.name
|
73
|
+
{left => right}.tap { |m|
|
72
74
|
m.override_to_s "#{visit o.left} = #{quote(o.right, o.left.column)}"
|
73
75
|
}
|
74
76
|
end
|
@@ -92,8 +94,7 @@ module Arel
|
|
92
94
|
def visit_Arel_Nodes_SqlLiteral o
|
93
95
|
# Strip table name from table.column -like literals
|
94
96
|
result = o.to_s.gsub(/\w+\.([\w*]+)/, '\1')
|
95
|
-
|
96
|
-
if result.match /(\w+)\s*=\s*'(.*?)'/
|
97
|
+
if result.match /`(\w+)`\s*=\s*'(.*?)'/
|
97
98
|
# transform 'a = b' to {'a' => 'b'}
|
98
99
|
{$1 => $2}.tap {|m| m.override_to_s result}
|
99
100
|
else
|
@@ -138,4 +138,12 @@ describe "model with active_record_simple_db" do
|
|
138
138
|
p = Person.where(:year => 2010).all
|
139
139
|
p.should_not be_empty
|
140
140
|
end
|
141
|
+
|
142
|
+
it "should be correct work with where statment with \"from\" column" do
|
143
|
+
p1 = Person.new
|
144
|
+
p1.from = 'test'
|
145
|
+
p1.save
|
146
|
+
p = Person.where(:from => 'test').all
|
147
|
+
p.should_not be_empty
|
148
|
+
end
|
141
149
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -38,7 +38,7 @@ class Person < ActiveRecord::Base
|
|
38
38
|
t.string :login
|
39
39
|
t.integer :year, :limit => 4
|
40
40
|
t.boolean :active
|
41
|
-
t.string :
|
41
|
+
t.string :from
|
42
42
|
t.float :price
|
43
43
|
t.integer :lock_version
|
44
44
|
|
@@ -51,7 +51,7 @@ class Person < ActiveRecord::Base
|
|
51
51
|
:year => 2010,
|
52
52
|
:active => true,
|
53
53
|
:price => 10.04,
|
54
|
-
:
|
54
|
+
:from => 'paid'
|
55
55
|
}
|
56
56
|
end
|
57
57
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-simpledb-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ilia Ablamonov
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-01-
|
20
|
+
date: 2011-01-17 00:00:00 +03:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|