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.
@@ -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