cloudwow-not_relational 0.1.0 → 0.1.2

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.
Files changed (41) hide show
  1. data/VERSION.yml +1 -1
  2. data/lib/not_relational/berkeley_repository.rb +2 -2
  3. data/lib/not_relational/configuration.rb +10 -10
  4. data/lib/not_relational/domain_model.rb +12 -10
  5. data/lib/not_relational/geo.rb +1 -0
  6. data/lib/not_relational/lazy_loading_text.rb +3 -3
  7. data/lib/not_relational/memcache_repository.rb +6 -6
  8. data/lib/not_relational/memory_repository.rb +6 -6
  9. data/lib/not_relational/memory_storage.rb +7 -0
  10. data/lib/not_relational/property_description.rb +2 -2
  11. data/lib/not_relational/repository_factory.rb +3 -3
  12. data/lib/not_relational/repository_interface.rb +2 -2
  13. data/lib/not_relational/{repository.rb → sdb_repository.rb} +269 -231
  14. data/lib/not_relational/storage.rb +2 -2
  15. data/lib/not_relational.rb +5 -2
  16. data/test/models/album.rb +1 -1
  17. data/test/models/blurb_wording.rb +1 -1
  18. data/test/models/friend_request.rb +1 -1
  19. data/test/models/group.rb +1 -1
  20. data/test/models/media_item.rb +1 -1
  21. data/test/models/message.rb +1 -1
  22. data/test/models/node.rb +1 -1
  23. data/test/models/outgoing_email.rb +1 -1
  24. data/test/models/user.rb +1 -1
  25. data/test/models/weblab.rb +2 -2
  26. data/test/unit_tests/album_test.rb +1 -5
  27. data/test/unit_tests/blurb_test.rb +2 -2
  28. data/test/unit_tests/comment_test.rb +2 -2
  29. data/test/unit_tests/composite_key_test.rb +1 -1
  30. data/test/unit_tests/enum_test.rb +1 -1
  31. data/test/unit_tests/group_test.rb +2 -2
  32. data/test/unit_tests/mediaitem_test.rb +2 -2
  33. data/test/unit_tests/memcache_repository_test.rb +2 -2
  34. data/test/unit_tests/memory_repository_test.rb +1 -1
  35. data/test/unit_tests/node_test.rb +2 -2
  36. data/test/unit_tests/place_test.rb +2 -2
  37. data/test/unit_tests/reference_set_test.rb +1 -1
  38. data/test/unit_tests/repository_factory_test.rb +1 -1
  39. data/test/unit_tests/tag_test.rb +2 -2
  40. data/test/unit_tests/user_test.rb +2 -2
  41. metadata +5 -5
@@ -1,6 +1,6 @@
1
1
  # THis class implements access to SDB 222.
2
2
  # =I am the walrus=
3
- module NotRelational
3
+ module NotRelational
4
4
  $KCODE = 'u'
5
5
  require "aws_sdb"
6
6
  require "not_relational/storage.rb"
@@ -9,77 +9,59 @@
9
9
 
10
10
  require File.dirname(__FILE__) +"/sdb_monkey_patch.rb"
11
11
  # THis class implements access to SDB.
12
- class Repository
13
- attr_accessor :use_cache
12
+ class SdbRepository
13
+ MAX_PAGE_SIZE=250#defined by sdb
14
14
  attr_accessor :storage
15
+
15
16
  def initialize(
16
- domain_name_prefix,#MyDevPayApp
17
+ base_domain_name,#MyDevPayApp
17
18
  clob_bucket,
18
19
  aws_key_id,
19
20
  aws_secret_key,
20
21
  memcache_servers = nil ,
21
- a_storage=nil,
22
- append_table_to_domain=true,
22
+ blob_storage=nil,
23
+ use_seperate_domain_per_model=true,
23
24
  options={}
24
25
 
25
26
  )
26
-
27
- @use_cache=true
28
- @storage=a_storage
29
- @storage||=Storage.new(aws_key_id,aws_secret_key,memcache_servers)
30
- @domain_name_prefix = domain_name_prefix
31
- @clob_bucket = clob_bucket
32
- @memcache_servers = memcache_servers
33
- @aws_key_id = aws_key_id
34
- @aws_secret_key = aws_secret_key
35
- @append_table_to_domain=append_table_to_domain
27
+
36
28
  @logger = options[:logger]
37
29
  if !@logger
38
30
  @logger = Logger.new(STDOUT)
39
31
  @logger.level = Logger::ERROR
40
32
  end
33
+
34
+
35
+
36
+ @base_domain_name = base_domain_name
37
+ @storage_bucket = clob_bucket
38
+ @memcache_servers = memcache_servers
39
+ @aws_key_id = aws_key_id
40
+ @aws_secret_key = aws_secret_key
41
+ @use_seperate_domain_per_model=use_seperate_domain_per_model
42
+ @storage=blob_storage
43
+
44
+ @use_cache=true
45
+ @use_cache=options[:use_cache] if options.has_key?(:use_cache)
46
+
47
+
48
+ @storage ||= Storage.new(aws_key_id,aws_secret_key,memcache_servers)
41
49
  @sdb=AwsSdb::Service.new(:access_key_id=>aws_key_id,:secret_access_key=>aws_secret_key,:url=>"http://sdb.amazonaws.com",:logger=>@logger)
42
50
  @session_cache=MemoryRepository.new
43
-
44
- # #create_domain()
45
- end
46
- #can you guess what this does?
47
- def clear_session_cache
48
- @session_cache.clear
49
- end
50
- def flatten_key(key)
51
- if key.is_a?( Array)
52
- flattened_key=""
53
- key.each do |key_part|
54
- flattened_key<<CGI.escape(key_part.to_s)+"/"
55
- end
56
- return flattened_key[0..-2]
57
- else
58
- return CGI.escape(key.to_s)
59
- end
60
- end
61
- def make_cache_key(table_name,primary_key)
62
51
 
63
- primary_key=flatten_key(primary_key)
64
- primary_key="#{table_name}/#{primary_key}" unless @append_table_to_domain
65
- return primary_key
66
- end
67
- def make_clob_key(table_name,primary_key,clob_name)
68
- return "clobs/#{table_name}/#{flatten_key(primary_key)}/#{clob_name}"
69
- end
70
- def get_clob(table_name,primary_key,clob_name)
71
- return @storage.get(@clob_bucket,make_clob_key(table_name,primary_key,clob_name))
72
-
73
52
  end
53
+
74
54
  def save(table_name, primary_key, attributes,index_descriptions)
55
+
75
56
  @session_cache.save(table_name,primary_key,attributes,index_descriptions)
57
+
76
58
  formatted_attributes={}
77
59
  attributes.each do |description,value|
78
60
  if value || description.value_type==:boolean
79
- if description.is_clob
61
+ if description.is_text?
80
62
  @storage.put(
81
- @clob_bucket,
82
- make_clob_key(table_name,primary_key,description.name),
63
+ @storage_bucket,
64
+ make_storage_key(table_name,primary_key,description.name),
83
65
  value.to_s,
84
66
  {})
85
67
  else
@@ -87,7 +69,7 @@
87
69
  end
88
70
  end
89
71
  end
90
- if !@append_table_to_domain
72
+ if !@use_seperate_domain_per_model
91
73
  formatted_attributes['metadata%%table_name'] = table_name
92
74
 
93
75
  end
@@ -95,34 +77,153 @@
95
77
  # put_into_cache(table_name, primary_key, formatted_attributes)
96
78
 
97
79
  end
98
- # def put_into_cache(table_name, primary_key, formatted_attributes)
99
- # if @use_cache
100
- # cacheItem=DomainModelCacheItem.new(table_name, primary_key, formatted_attributes)
101
- #
102
- # yaml=cacheItem.ya2yaml(:syck_compatible => true)
103
- #
104
- # @storage.put(
105
- # @clob_bucket,
106
- # make_cache_key(table_name,primary_key),
107
- # yaml ,
108
- # {})
109
- # end
110
- # end
80
+
81
+ def destroy(table_name, primary_key)
82
+ @session_cache.destroy(table_name,primary_key)
83
+ @sdb.delete_attributes(make_domain_name(table_name),make_cache_key(table_name, primary_key) )
84
+ #TODO destroy text
85
+ end
86
+
87
+
88
+ # result will be an array of hashes. each hash is a set of attributes
89
+ def query(table_name,attribute_descriptions,options)
90
+
91
+ @logger.debug "query on table: #{table_name}"
92
+
93
+ if options.has_key?(:limit) and !options.has_key?(:order_by)
94
+ session_cache_result=@session_cache.query(table_name,attribute_descriptions,options)
95
+ if options[:limit]==session_cache_result.length
96
+ return session_cache_result
97
+ end
98
+ end
99
+
100
+ the_query=build_query(table_name, attribute_descriptions, options)
101
+ @logger.debug "the query: #{the_query}"
102
+
103
+ max=MAX_PAGE_SIZE
104
+ if options[:limit]
105
+ max=options[:limit].to_i
106
+ end
107
+
108
+ page_size=max> MAX_PAGE_SIZE ? MAX_PAGE_SIZE : max
109
+ sdb_result,token=sdb_query_with_attributes(table_name,the_query,page_size)
110
+
111
+ while !(token.nil? || token.empty? || sdb_result.length>=max)
112
+ page_size=max- sdb_result.length
113
+ page_size=page_size> MAX_PAGE_SIZE ? MAX_PAGE_SIZE : page_size
114
+ partial_results,token=sdb_query_with_attributes(table_name,the_query,page_size,token)
115
+ sdb_result.merge!( partial_results)
116
+ end
117
+
118
+ result=[]
119
+ sdb_result.each{|primary_key,sdb_row|
120
+ attributes =parse_attributes(attribute_descriptions,sdb_row)
121
+ if attributes
122
+ result<<attributes
123
+ end
124
+ }
125
+
126
+ #ordering is handled in sdb now
127
+ # if options and options[:order_by]
128
+ # result.sort! do |a,b|
129
+ # a_value=a[options[:order_by]]
130
+ # b_value=b[options[:order_by]]
131
+ # if options[:order] && options[:order]!=:ascending
132
+ # if !a_value
133
+ # 1
134
+ # else
135
+ # if b_value
136
+ # b_value <=> a_value
137
+ # else
138
+ # -1
139
+ # end
140
+ # end
141
+ # else
142
+ # if !b_value
143
+ # 1
144
+ # else
145
+ # if a_value
146
+ # a_value <=> b_value
147
+ # else
148
+ # -1
149
+ # end
150
+ # end
151
+ # end
152
+ # end
153
+ # end
154
+ if options[:limit] && result.length>options[:limit]
155
+ result=result[0..(options[:limit]-1)]
156
+ end
157
+ return result
158
+ end
159
+ def get_text(table_name,primary_key,clob_name)
160
+ return @storage.get(@storage_bucket,make_storage_key(table_name,primary_key,clob_name))
161
+
162
+ end
163
+
164
+
165
+ def find_one(table_name, primary_key,attribute_descriptions)#, non_clob_attribute_names, clob_attribute_names)
166
+ session_cache_result=@session_cache.find_one(table_name, make_cache_key(table_name,primary_key),attribute_descriptions)
167
+ return session_cache_result if session_cache_result
168
+ # if @use_cache
169
+ # yaml=@storage.get(@storage_bucket,make_cache_key(table_name,primary_key))
170
+ # if yaml
171
+ # result=YAML::load( yaml)
172
+ # if result.respond_to?(:non_clob_attributes) && result.non_clob_attributes!=nil
173
+ # return parse_attributes(attribute_descriptions, result.non_clob_attributes)
174
+ # end
175
+ #
176
+ # end
177
+ # end
178
+ attributes=parse_attributes(attribute_descriptions,sdb_get_attributes(table_name,primary_key))
179
+ if attributes
180
+ # #attributes[:primary_key]=primary_key #put_into_cache(table_name,
181
+ # primary_key, attributes)
182
+ end
183
+
184
+ attributes
185
+ end
186
+
111
187
  def create_domain
112
188
  20.times do |i|
113
189
  begin
114
- @sdb.create_domain(@domain_name_prefix)
190
+ @sdb.create_domain(@base_domain_name)
115
191
  return
116
-
192
+
117
193
  rescue => e
118
194
  s= "#{e.message}\n#{e.backtrace}"
119
195
  @logger.warn(s) if @logger
120
196
  sleep(i*i)
121
-
197
+
122
198
  end
123
199
  end
124
-
200
+
125
201
  end
202
+
203
+ def pause
204
+ sleep(2)
205
+ end
206
+
207
+ def clear
208
+ @session_cache.clear
209
+ end
210
+
211
+ # can you guess what this does?
212
+ def clear_session_cache
213
+ @session_cache.clear
214
+ end
215
+
216
+
217
+ private
218
+
219
+ def make_domain_name(table_name)
220
+ if @use_seperate_domain_per_model
221
+ @base_domain_name+"_"+table_name
222
+ else
223
+ @base_domain_name
224
+ end
225
+ end
226
+
126
227
  def put_attributes(table_name,primary_key, formatted_attributes,options={})
127
228
  20.times do |i|
128
229
  begin
@@ -132,17 +233,77 @@
132
233
  rescue Exception => e
133
234
  s= "#{e.message}\n#{e.backtrace}"
134
235
  @logger.warn(s) if @logger
135
- puts e.to_yaml
136
236
  sleep(i*i)
137
237
  end
138
238
  end
239
+
240
+ end
241
+
242
+ def sdb_get_attributes(table_name,primary_key)
243
+
244
+ @logger.debug( "SDB get_attributes #{table_name} : #{primary_key}") if @logger
245
+
246
+ 20.times do |i|
247
+ begin
248
+ return @sdb.get_attributes(make_domain_name(table_name), make_cache_key(table_name,primary_key))
249
+ rescue Exception => e
250
+ s= "#{e.message}\n#{e.backtrace}"
251
+ @logger.warn(s) if @logger
139
252
 
253
+ sleep(i*i)
254
+ ensure
255
+
256
+ end
257
+ end
258
+
140
259
  end
141
- def extend_query(query,new_clause)
260
+
261
+ # this method no longer useful since query with attrivutes was introduced to sdb
262
+ # def sdb_query(table_name,query,max,token=nil)
263
+ #
264
+ # @logger.debug( "SDB query:#{table_name}(#{max}) : #{query} #{token}" ) if @logger
265
+ # # puts "#{table_name} #{query} (#{max}) #{token}"
266
+ # 20.times do |i|
267
+ # begin
268
+ # return @sdb.query(make_domain_name(table_name),query,max,token)
269
+ #
270
+ # rescue Exception => e
271
+ # s= "#{e.message}\n#{e.backtrace}"
272
+ # @logger.error(s) if @logger
273
+ #
274
+ # sleep(i*i)
275
+ # ensure
276
+ #
277
+ # end
278
+ # end
279
+ #
280
+ # end
281
+
282
+ def sdb_query_with_attributes(table_name,query,max,token=nil)
283
+
284
+ @logger.debug( "SDB query:#{table_name}(#{max}) : #{query} #{token}" ) if @logger
285
+ 20.times do |i|
286
+ begin
287
+ return @sdb.query_with_attributes(make_domain_name(table_name),query,max,token)
288
+
289
+ rescue Exception => e
290
+ s= "#{e.message}\n#{e.backtrace}"
291
+ @logger.error(s) if @logger
292
+
293
+ sleep(i*i)
294
+ ensure
295
+
296
+ end
297
+ end
298
+
299
+ end
300
+
301
+
302
+ def extend_query(query,new_clause)
142
303
  if query.length>0
143
304
  query << " intersection "
144
305
  end
145
-
306
+
146
307
  query << new_clause
147
308
  end
148
309
  def escape_quotes(value)
@@ -150,8 +311,8 @@
150
311
  value.gsub( "'","\\'")
151
312
  end
152
313
  def build_query(table_name,attribute_descriptions,options={})
153
-
154
-
314
+
315
+
155
316
  query=""
156
317
  params=nil
157
318
  params=options[:params] if options.has_key?(:params)
@@ -168,7 +329,7 @@
168
329
  end
169
330
 
170
331
  end
171
- if !@append_table_to_domain
332
+ if !@use_seperate_domain_per_model
172
333
  extend_query(query," ['metadata%%table_name' = '#{table_name}']")
173
334
 
174
335
  end
@@ -226,161 +387,28 @@
226
387
  extend_query(query,"["+condition.to_sdb_query()+"]")
227
388
  end
228
389
  end
229
-
230
- end
231
- return query
232
-
233
- end
234
- # #result will be an array of hashes. each hash is a set of attributes
235
- def query(table_name,attribute_descriptions,options)
236
- if options.has_key?(:limit) and !options.has_key?(:order_by)
237
- session_cache_result=@session_cache.query(table_name,attribute_descriptions,options)
238
- if options[:limit]==session_cache_result.length
239
- return session_cache_result
240
- end
241
- end
242
-
243
- the_query=build_query(table_name, attribute_descriptions, options)
244
- max=250
245
- if options[:limit]
246
- max=options[:limit].to_i
247
-
248
- end
249
- page_size=max>250?250:max
250
- sdb_result,token=sdb_query_with_attributes(table_name,the_query,page_size)
251
-
252
- while !(token.nil? || token.empty? || sdb_result.length>=max)
253
- page_size=max- sdb_result.length
254
- page_size=page_size>250?250:page_size
255
- partial_results,token=sdb_query_with_attributes(table_name,the_query,page_size,token)
256
390
 
257
- sdb_result.merge!( partial_results)
258
391
  end
259
- result=[]
260
- sdb_result.each{|primary_key,sdb_row|
261
- attributes =parse_attributes(attribute_descriptions,sdb_row)
262
- if attributes
263
- # #attributes[:primary_key]=primary_key
392
+ return query
264
393
 
265
- result<<attributes
266
- end
267
- }
268
- if options and options[:order_by]
269
- result.sort! do |a,b|
270
- a_value=a[options[:order_by]]
271
- b_value=b[options[:order_by]]
272
- if options[:order] && options[:order]!=:ascending
273
- if !a_value
274
- 1
275
- else
276
- if b_value
277
- b_value <=> a_value
278
- else
279
- -1
280
- end
281
- end
282
- else
283
- if !b_value
284
- 1
285
- else
286
- if a_value
287
- a_value <=> b_value
288
- else
289
- -1
290
- end
291
- end
292
- end
293
- end
294
- end
295
- if options[:limit] && result.length>options[:limit]
296
- result=result[0..(options[:limit]-1)]
297
- end
298
- return result
299
- end
300
- def find_one(table_name, primary_key,attribute_descriptions)#, non_clob_attribute_names, clob_attribute_names)
301
- session_cache_result=@session_cache.find_one(table_name, make_cache_key(table_name,primary_key),attribute_descriptions)
302
- return session_cache_result if session_cache_result
303
- # if @use_cache
304
- # yaml=@storage.get(@clob_bucket,make_cache_key(table_name,primary_key))
305
- # if yaml
306
- # result=YAML::load( yaml)
307
- # if result.respond_to?(:non_clob_attributes) && result.non_clob_attributes!=nil
308
- # return parse_attributes(attribute_descriptions, result.non_clob_attributes)
309
- # end
310
- #
311
- # end
312
- # end
313
- attributes=parse_attributes(attribute_descriptions,sdb_get_attributes(table_name,primary_key))
314
- if attributes
315
- # #attributes[:primary_key]=primary_key #put_into_cache(table_name,
316
- # primary_key, attributes)
317
- end
318
-
319
- attributes
320
- end
321
- def make_domain_name(table_name)
322
- if @append_table_to_domain
323
- @domain_name_prefix+"_"+table_name
324
- else
325
- @domain_name_prefix
326
- end
327
- end
328
- def sdb_get_attributes(table_name,primary_key)
329
-
330
- @logger.debug( "SDB get_attributes #{table_name} : #{primary_key}") if @logger
331
-
332
- 20.times do |i|
333
- begin
334
- return @sdb.get_attributes(make_domain_name(table_name), make_cache_key(table_name,primary_key))
335
- rescue Exception => e
336
- s= "#{e.message}\n#{e.backtrace}"
337
- @logger.warn(s) if @logger
338
-
339
- sleep(i*i)
340
- ensure
341
-
342
- end
343
- end
344
-
345
- end
346
- def sdb_query(table_name,query,max,token=nil)
347
-
348
- @logger.debug( "SDB query:#{table_name}(#{max}) : #{query} #{token}" ) if @logger
349
- # puts "#{table_name} #{query} (#{max}) #{token}"
350
- 20.times do |i|
351
- begin
352
- return @sdb.query(make_domain_name(table_name),query,max,token)
353
-
354
- rescue Exception => e
355
- s= "#{e.message}\n#{e.backtrace}"
356
- @logger.error(s) if @logger
357
-
358
- sleep(i*i)
359
- ensure
360
-
361
- end
362
- end
363
-
364
394
  end
365
- def sdb_query_with_attributes(table_name,query,max,token=nil)
366
395
 
367
- @logger.debug( "SDB query:#{table_name}(#{max}) : #{query} #{token}" ) if @logger
368
- # puts "#{table_name} #{query} (#{max}) #{token}"
369
- 20.times do |i|
370
- begin
371
- return @sdb.query_with_attributes(make_domain_name(table_name),query,max,token)
372
-
373
- rescue Exception => e
374
- s= "#{e.message}\n#{e.backtrace}"
375
- @logger.error(s) if @logger
376
-
377
- sleep(i*i)
378
- ensure
396
+ # def put_into_cache(table_name, primary_key, formatted_attributes)
397
+ # if @use_cache
398
+ # cacheItem=DomainModelCacheItem.new(table_name, primary_key, formatted_attributes)
399
+ #
400
+ # yaml=cacheItem.ya2yaml(:syck_compatible => true)
401
+ #
402
+ # @storage.put(
403
+ # @storage_bucket,
404
+ # make_cache_key(table_name,primary_key),
405
+ # yaml ,
406
+ # {})
407
+ # end
408
+ # end
379
409
 
380
- end
381
- end
382
410
 
383
- end
411
+
384
412
  def parse_attributes(attribute_descriptions,attributes)
385
413
  if !attributes || attributes.length==0
386
414
  return nil
@@ -399,21 +427,31 @@
399
427
  end
400
428
  parsed_attributes
401
429
  end
402
- def destroy(table_name, primary_key)
403
- @session_cache.destroy(table_name,primary_key)
404
- @sdb.delete_attributes(make_domain_name(table_name),make_cache_key(table_name, primary_key) )
405
- # if @use_cache
406
- # @storage.delete(@clob_bucket,make_cache_key(table_name,primary_key))
407
- # end
430
+
431
+
432
+ def flatten_key(key)
433
+ if key.is_a?( Array)
434
+ flattened_key=""
435
+ key.each do |key_part|
436
+ flattened_key<<CGI.escape(key_part.to_s)+"/"
437
+ end
438
+ return flattened_key[0..-2]
439
+ else
440
+ return CGI.escape(key.to_s)
441
+ end
408
442
  end
409
- # #parse date in yyyy-mm-dd format
410
443
 
411
- def pause
412
- sleep(2)
444
+ def make_cache_key(table_name,primary_key)
445
+
446
+ primary_key=flatten_key(primary_key)
447
+ primary_key="#{table_name}/#{primary_key}" unless @use_seperate_domain_per_model
448
+ return primary_key
413
449
  end
414
450
 
415
- def clear
416
- @session_cache.clear
451
+ def make_storage_key(table_name,primary_key,clob_name)
452
+ return "clobs/#{table_name}/#{flatten_key(primary_key)}/#{clob_name}"
417
453
  end
454
+
455
+
418
456
  end
419
457
  end
@@ -72,7 +72,7 @@ class Storage
72
72
  if self.memory_only
73
73
  return nil
74
74
  end
75
- 20.times do |i|
75
+ 4.times do |i|
76
76
  begin
77
77
  response=real_s3.get(bucket,key)
78
78
  if response and response.http_response.code=='404'
@@ -103,7 +103,7 @@ class Storage
103
103
 
104
104
  return if self.memory_only
105
105
  x=nil
106
- 20.times do |i|
106
+ 4.times do |i|
107
107
  begin
108
108
  x= real_s3.put(bucket,key,S3::S3Object.new(object),attributes)
109
109
 
@@ -5,7 +5,7 @@
5
5
  # License:: Distributes under the same terms as Ruby
6
6
 
7
7
 
8
- require "#{File.dirname(__FILE__)}/not_relational/repository.rb"
8
+ require "#{File.dirname(__FILE__)}/not_relational/sdb_repository.rb"
9
9
  require "#{File.dirname(__FILE__)}/not_relational/repository_factory.rb"
10
10
  require "#{File.dirname(__FILE__)}/not_relational/acts_as_not_relational_application.rb"
11
11
  require "#{File.dirname(__FILE__)}/not_relational/memory_repository.rb"
@@ -14,4 +14,7 @@ require "#{File.dirname(__FILE__)}/not_relational/storage.rb"
14
14
  require "#{File.dirname(__FILE__)}/not_relational/s3.rb"
15
15
  require "#{File.dirname(__FILE__)}/not_relational/attribute_range.rb"
16
16
  require "#{File.dirname(__FILE__)}/not_relational/and_condition.rb"
17
- require "#{File.dirname(__FILE__)}/not_relational/or_condition.rb"
17
+ require "#{File.dirname(__FILE__)}/not_relational/or_condition.rb"
18
+ require "#{File.dirname(__FILE__)}/not_relational/starts_with_condition.rb"
19
+ require "#{File.dirname(__FILE__)}/not_relational/is_null_transform.rb"
20
+ require "#{File.dirname(__FILE__)}/not_relational/geo.rb"
data/test/models/album.rb CHANGED
@@ -9,7 +9,7 @@ class Album < NotRelational::DomainModel
9
9
  property :guid , :string,:unique=>true
10
10
  property :user_name , :string
11
11
  property :title , :string
12
- property :description , :clob
12
+ property :description , :text
13
13
  property :created_time_utc ,:date
14
14
  property :last_update_time_utc ,:date
15
15
  property :is_private, :boolean
@@ -7,7 +7,7 @@ class BlurbWording < NotRelational::DomainModel
7
7
  property :blurb_name,:string,:is_primary_key=>true
8
8
  property :blurb_namespace,:string,:is_primary_key=>true
9
9
  property :language_id , :string ,:is_primary_key=>true
10
- property :text,:clob
10
+ property :text,:text
11
11
  property :title , :string
12
12
  property :version , :string
13
13
  property :author , :string
@@ -8,7 +8,7 @@ class FriendRequest < DomainModel
8
8
  property :id,:string,:is_primary_key=>true
9
9
  property :user_name,:string
10
10
  property :friend_user_name,:string
11
- property :message,:clob
11
+ property :message,:text
12
12
  property :answer,:boolean
13
13
  property :created_time_utc,:date
14
14
  belongs_to :User,:user_name,:user
data/test/models/group.rb CHANGED
@@ -15,7 +15,7 @@ class Group < NotRelational::DomainModel
15
15
  property :short_description , :string
16
16
  property :icon_guid , :string
17
17
  property :tags , :string
18
- property :layout , :clob
18
+ property :layout , :text
19
19
  property :domain , :string,:unique=>true
20
20
 
21
21
  property :devpay_user_token , :string
@@ -15,7 +15,7 @@ class Mediaitem < NotRelational::DomainModel
15
15
  property :group_id , :string
16
16
  property :title , :string
17
17
  property :user_login , :string
18
- property :description , :clob
18
+ property :description , :text
19
19
  property :latitude , :float
20
20
  property :longitude , :float
21
21