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.
@@ -1,4 +1,6 @@
1
+
1
2
  module SdbDal
3
+
2
4
 
3
5
 
4
6
  class LazyLoadingText
@@ -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
- record["metadata%table_name"]=table_name
50
- record["metadata%primary_key"]=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 options.has_key?(:params)
125
+ if params
112
126
 
113
- options[:params].each do |param_key,param_value|
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
- a_value=a[options[:order_by]]
160
- b_value=b[options[:order_by]]
161
- if options[:order] && options[:order]!=:ascending
162
- if b_value
163
- b_value <=> a_value
164
- else
165
- -1
166
- end
167
- else
168
- if a_value
169
- a_value <=> b_value
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
- -1
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][primary_key]
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"]==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(primary_key)
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
- return "cached_objects/#{table_name}/#{CGI.escape(primary_key.to_s)}"
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}/#{CGI.escape(primary_key)}/#{clob_name}"
249
+ return "clobs/#{table_name}/#{flatten_key(primary_key)}/#{clob_name}"
219
250
  end
220
251
 
221
252
  end