sdb_dal 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sdb_dal/domain_object.rb +475 -422
- data/lib/sdb_dal/lazy_loading_text.rb +2 -0
- data/lib/sdb_dal/memory_repository.rb +54 -23
- data/lib/sdb_dal/repository.rb +356 -305
- data/lib/sdb_dal/repository_factory.rb +4 -3
- data/lib/sdb_dal/s3.rb +69 -57
- data/lib/sdb_dal/sdb_monkey_patch.rb +47 -0
- data/lib/sdb_dal/storage.rb +8 -4
- metadata +4 -3
@@ -12,7 +12,8 @@ module SdbDal
|
|
12
12
|
aws_key_id= nil,
|
13
13
|
aws_secret_key= nil,
|
14
14
|
memcache_servers = nil ,
|
15
|
-
dummy=nil
|
15
|
+
dummy=nil,
|
16
|
+
append_table_to_domain=nil
|
16
17
|
)
|
17
18
|
clear
|
18
19
|
end
|
@@ -46,8 +47,8 @@ module SdbDal
|
|
46
47
|
record[description.name]=value
|
47
48
|
end
|
48
49
|
end
|
49
|
-
|
50
|
-
record["metadata%primary_key"]=
|
50
|
+
record["metadata%table_name"]=table_name
|
51
|
+
record["metadata%primary_key"]=key
|
51
52
|
if index_descriptions
|
52
53
|
remove_from_indices(table_name,primary_key)
|
53
54
|
index_descriptions.each do |index_name,index|
|
@@ -99,7 +100,20 @@ module SdbDal
|
|
99
100
|
raise 'query not supported yet'
|
100
101
|
end
|
101
102
|
result=[]
|
103
|
+
params=nil
|
104
|
+
params=options[:params] if options.has_key?(:params)
|
102
105
|
|
106
|
+
if options.has_key?(:map)
|
107
|
+
params||={}
|
108
|
+
keys=options[:map][:keys]
|
109
|
+
values=options[:map][:values]
|
110
|
+
(0..keys.length-1).each do |i|
|
111
|
+
key=keys[i]
|
112
|
+
value=values[i]
|
113
|
+
params[key]=value
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
103
117
|
if options.has_key?(:index)
|
104
118
|
result= retrieve_from_index(table_name,options[:index],options[:index_value])
|
105
119
|
else
|
@@ -108,9 +122,9 @@ module SdbDal
|
|
108
122
|
if record["metadata%table_name"]!=table_name
|
109
123
|
ok=false
|
110
124
|
else
|
111
|
-
if
|
125
|
+
if params
|
112
126
|
|
113
|
-
|
127
|
+
params.each do |param_key,param_value|
|
114
128
|
|
115
129
|
if param_value==:NOT_NULL
|
116
130
|
if record[param_key]==nil
|
@@ -156,21 +170,24 @@ module SdbDal
|
|
156
170
|
end
|
157
171
|
if options and options[:order_by]
|
158
172
|
result.sort! do |a,b|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
173
|
+
|
174
|
+
a_value=a[options[:order_by]]
|
175
|
+
b_value=b[options[:order_by]]
|
176
|
+
x=0
|
177
|
+
if b_value && a_value
|
178
|
+
x=b_value <=> a_value
|
179
|
+
elsif a_value
|
180
|
+
x=-1
|
181
|
+
elsif b_value
|
182
|
+
x=1
|
183
|
+
else
|
184
|
+
x=0
|
185
|
+
end
|
186
|
+
if options[:order] && options[:order]!=:ascending
|
187
|
+
x
|
170
188
|
else
|
171
|
-
-
|
189
|
+
-x
|
172
190
|
end
|
173
|
-
end
|
174
191
|
end
|
175
192
|
end
|
176
193
|
if options[:limit] and result.length>options[:limit]
|
@@ -194,28 +211,42 @@ module SdbDal
|
|
194
211
|
remove_from_indices(table_name,primary_key)
|
195
212
|
end
|
196
213
|
def remove_from_indices(table_name,primary_key)
|
214
|
+
key=make_cache_key(table_name,primary_key);
|
197
215
|
if @reverse_indexes[table_name]
|
198
|
-
indicies=@reverse_indexes[table_name][
|
216
|
+
indicies=@reverse_indexes[table_name][key]
|
199
217
|
if indicies
|
200
218
|
indicies.each do |index|
|
201
219
|
index.each do |record|
|
202
|
-
if record["metadata%primary_key"]==
|
220
|
+
if record["metadata%primary_key"]==key
|
203
221
|
index.delete(record)
|
204
222
|
break
|
205
223
|
end
|
206
224
|
end
|
207
225
|
end
|
208
|
-
@reverse_indexes[table_name].delete(
|
226
|
+
@reverse_indexes[table_name].delete(key)
|
209
227
|
end
|
210
228
|
end
|
211
229
|
|
212
230
|
end
|
213
231
|
private
|
232
|
+
def flatten_key(key)
|
233
|
+
if key.is_a?( Array)
|
234
|
+
flattened_key=""
|
235
|
+
key.each do |key_part|
|
236
|
+
flattened_key<<CGI.escape(key_part.to_s)+"/"
|
237
|
+
end
|
238
|
+
return flattened_key[0..-2]
|
239
|
+
else
|
240
|
+
return CGI.escape(key.to_s)
|
241
|
+
end
|
242
|
+
end
|
214
243
|
def make_cache_key(table_name,primary_key)
|
215
|
-
|
244
|
+
|
245
|
+
primary_key=flatten_key(primary_key)
|
246
|
+
return "cached_objects/#{table_name}/#{primary_key}"
|
216
247
|
end
|
217
248
|
def make_clob_key(table_name,primary_key,clob_name)
|
218
|
-
return "clobs/#{table_name}/#{
|
249
|
+
return "clobs/#{table_name}/#{flatten_key(primary_key)}/#{clob_name}"
|
219
250
|
end
|
220
251
|
|
221
252
|
end
|