Class: SdbDal::MemoryRepository
- Inherits:
-
Object
- Object
- SdbDal::MemoryRepository
- Defined in:
- lib/sdb_dal/memory_repository.rb
Instance Attribute Summary collapse
-
#storage ⇒ Object
Returns the value of attribute storage.
-
#use_cache ⇒ Object
this here just so interface matches sdb repo.
Instance Method Summary collapse
- #clear ⇒ Object
- #clear_session_cache ⇒ Object
- #destroy(table_name, primary_key) ⇒ Object
-
#find_one(table_name, primary_key, attribute_descriptions) ⇒ Object
, non_clob_attribute_names, clob_attribute_names).
- #get_clob(table_name, primary_key, clob_name) ⇒ Object
-
#initialize(sdb_domain = nil, clob_bucket = nil, aws_key_id = nil, aws_secret_key = nil, memcache_servers = nil, dummy = nil, append_table_to_domain = nil, options = {}) ⇒ MemoryRepository
constructor
A new instance of MemoryRepository.
- #pause ⇒ Object
- #query(table_name, attribute_descriptions, options) ⇒ Object
- #query_ids(table_name, attribute_descriptions, options) ⇒ Object
- #remove_from_indices(table_name, primary_key) ⇒ Object
- #retrieve_from_index(table_name, index_name, index_value) ⇒ Object
- #save(table_name, primary_key, attributes, index_descriptions) ⇒ Object
-
#save_into_index(table_name, record, index_name, index_value) ⇒ Object
puts record.to_yaml.
Constructor Details
#initialize(sdb_domain = nil, clob_bucket = nil, aws_key_id = nil, aws_secret_key = nil, memcache_servers = nil, dummy = nil, append_table_to_domain = nil, options = {}) ⇒ MemoryRepository
Returns a new instance of MemoryRepository.
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/sdb_dal/memory_repository.rb', line 9 def initialize( sdb_domain= nil, clob_bucket= nil, aws_key_id= nil, aws_secret_key= nil, memcache_servers = nil , dummy=nil, append_table_to_domain=nil, ={} ) clear end |
Instance Attribute Details
#storage ⇒ Object
Returns the value of attribute storage.
7 8 9 |
# File 'lib/sdb_dal/memory_repository.rb', line 7 def storage @storage end |
#use_cache ⇒ Object
this here just so interface matches sdb repo
6 7 8 |
# File 'lib/sdb_dal/memory_repository.rb', line 6 def use_cache @use_cache end |
Instance Method Details
#clear ⇒ Object
28 29 30 31 32 33 |
# File 'lib/sdb_dal/memory_repository.rb', line 28 def clear @records={} @indexes={} @reverse_indexes={} @storage=MemoryStorage.new end |
#clear_session_cache ⇒ Object
24 25 26 |
# File 'lib/sdb_dal/memory_repository.rb', line 24 def clear_session_cache end |
#destroy(table_name, primary_key) ⇒ Object
208 209 210 211 212 213 214 215 |
# File 'lib/sdb_dal/memory_repository.rb', line 208 def destroy(table_name, primary_key) key=make_cache_key(table_name,primary_key); if @records.has_key?(key) @records.delete(key) end remove_from_indices(table_name,primary_key) end |
#find_one(table_name, primary_key, attribute_descriptions) ⇒ Object
, non_clob_attribute_names, clob_attribute_names)
201 202 203 |
# File 'lib/sdb_dal/memory_repository.rb', line 201 def find_one(table_name, primary_key,attribute_descriptions)#, non_clob_attribute_names, clob_attribute_names) return @records[make_cache_key(table_name,primary_key)] end |
#get_clob(table_name, primary_key, clob_name) ⇒ Object
204 205 206 207 |
# File 'lib/sdb_dal/memory_repository.rb', line 204 def get_clob(table_name,primary_key,clob_name) return @storage.get("",make_clob_key(table_name,primary_key,clob_name)) end |
#pause ⇒ Object
21 22 |
# File 'lib/sdb_dal/memory_repository.rb', line 21 def pause end |
#query(table_name, attribute_descriptions, options) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/sdb_dal/memory_repository.rb', line 100 def query(table_name,attribute_descriptions,) if [:query] raise 'query not supported yet' end result=[] params=nil params=[:params] if .has_key?(:params) if .has_key?(:map) params||={} keys=[:map][:keys] values=[:map][:values] (0..keys.length-1).each do |i| key=keys[i] value=values[i] params[key]=value end end if .has_key?(:index) result= retrieve_from_index(table_name,[:index],[:index_value]) else @records.each do |record_key,record| ok=true if record["metadata%table_name"]!=table_name ok=false else if params params.each do |param_key,param_value| if param_value==:NOT_NULL if record[param_key]==nil ok=false break end elsif param_value==:NULL if record[param_key]!=nil ok=false break end elsif param_value.respond_to?(:matches?) if !param_value.matches?(record[param_key]) ok=false break end elsif !record[param_key] && !param_value # #ok break elsif record[param_key]!=param_value ok=false break end end end if .has_key?(:conditions) [:conditions].each do |condition| if !condition.matches?(record) ok=false break end end end end if ok result << record end end end if and [:order_by] result.sort! do |a,b| a_value=a[[:order_by]] b_value=b[[:order_by]] x=0 if b_value && a_value x=b_value <=> a_value elsif a_value x=-1 elsif b_value x=1 else x=0 end if [:order] && [:order]!=:ascending x else -x end end end if [:limit] and result.length>[:limit] result=result[0..[:limit]-1] end return result end |
#query_ids(table_name, attribute_descriptions, options) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/sdb_dal/memory_repository.rb', line 83 def query_ids(table_name,attribute_descriptions,) primary_key=nil attribute_descriptions.each do |name,desc| if desc.is_primary_key primary_key= name.to_sym break end end objects=query(table_name,attribute_descriptions,) result=[] objects.each do | o| result << o[primary_key] end result end |
#remove_from_indices(table_name, primary_key) ⇒ Object
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/sdb_dal/memory_repository.rb', line 216 def remove_from_indices(table_name,primary_key) key=make_cache_key(table_name,primary_key); if @reverse_indexes[table_name] indicies=@reverse_indexes[table_name][key] if indicies indicies.each do |index| index.each do |record| if record["metadata%primary_key"]==key index.delete(record) break end end end @reverse_indexes[table_name].delete(key) end end end |
#retrieve_from_index(table_name, index_name, index_value) ⇒ Object
78 79 80 81 82 |
# File 'lib/sdb_dal/memory_repository.rb', line 78 def retrieve_from_index(table_name,index_name,index_value) return [] unless @indexes[table_name] return [] unless @indexes[table_name][index_name] return @indexes[table_name][index_name][index_value] ||[] end |
#save(table_name, primary_key, attributes, index_descriptions) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/sdb_dal/memory_repository.rb', line 35 def save(table_name, primary_key, attributes,index_descriptions) key=make_cache_key(table_name,primary_key); record=@records[key] if !record record={} @records[key]=record end attributes.each do |description,value| if description.is_clob @storage.put("",make_clob_key(table_name,primary_key,description.name),value) else record[description.name]=value end end record["metadata%table_name"]=table_name record["metadata%primary_key"]=key if index_descriptions remove_from_indices(table_name,primary_key) index_descriptions.each do |index_name,index| index_value=record[index_name.to_sym] save_into_index(table_name, record, index.name, index_value) end end # puts record.to_yaml end |
#save_into_index(table_name, record, index_name, index_value) ⇒ Object
puts record.to_yaml
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/sdb_dal/memory_repository.rb', line 63 def save_into_index(table_name,record,index_name,index_value) @indexes[table_name]||={} @indexes[table_name][index_name]||={} index=(@indexes[table_name][index_name][index_value]||=[]) index.each_index do |i| if index[i]["metadata%primary_key"]==record["metadata%primary_key"] index[i]=record return end end index << record @reverse_indexes[table_name]||={} @reverse_indexes[table_name][record["metadata%primary_key"]]||=[] @reverse_indexes[table_name][record["metadata%primary_key"]] << index end |