sdb_dal 0.0.4 → 0.0.5
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/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
|