Fix user filtering for directory listings

This commit is contained in:
2012-10-20 11:32:34 +02:00
parent 39039148df
commit 2882bca483
3 changed files with 57 additions and 7 deletions

View File

@@ -5,6 +5,8 @@ require "cgi"
module RemoteStorage
module Riak
::Riak.url_decoding = true
def client
@client ||= ::Riak::Client.new(LiquorCabinet.config['riak'].symbolize_keys)
end
@@ -134,6 +136,13 @@ module RemoteStorage
def directory_entries(user, directory)
directory = "/" if directory == ""
user_keys = data_bucket.get_index("user_id_bin", user)
directory_keys = data_bucket.get_index("directory_bin", directory)
all_keys = user_keys & directory_keys
return [] if all_keys.empty?
map_query = <<-EOH
function(v){
keys = v.key.split(':');
@@ -145,15 +154,26 @@ module RemoteStorage
}];
}
EOH
objects = ::Riak::MapReduce.new(client).
index("user_data", "user_id_bin", user).
index("user_data", "directory_bin", directory).
map_reduce = ::Riak::MapReduce.new(client)
all_keys.each do |key|
map_reduce.add("user_data", key)
end
map_reduce.
map(map_query, :keep => true).
run
end
def sub_directories(user, directory)
directory = "/" if directory == ""
user_keys = directory_bucket.get_index("user_id_bin", user)
directory_keys = directory_bucket.get_index("directory_bin", directory)
all_keys = user_keys & directory_keys
return [] if all_keys.empty?
map_query = <<-EOH
function(v){
keys = v.key.split(':');
@@ -165,9 +185,13 @@ module RemoteStorage
}];
}
EOH
objects = ::Riak::MapReduce.new(client).
index("rs_directories", "user_id_bin", user).
index("rs_directories", "directory_bin", directory).
map_reduce = ::Riak::MapReduce.new(client)
all_keys.each do |key|
map_reduce.add("rs_directories", key)
end
map_reduce.
map(map_query, :keep => true).
run
end