Save list of directory items in redis
This commit is contained in:
parent
cd2c0865e8
commit
189d04af25
@ -128,7 +128,7 @@ module RemoteStorage
|
||||
# TODO get last modified from response and add to metadata
|
||||
metadata = {
|
||||
etag: res.headers[:etag],
|
||||
size: data.length,
|
||||
size: data.size,
|
||||
type: content_type
|
||||
}
|
||||
|
||||
@ -264,9 +264,18 @@ module RemoteStorage
|
||||
parent_directories
|
||||
end
|
||||
|
||||
def parent_directory_for(directory)
|
||||
if directory.match(/\//)
|
||||
return directory[0..directory.rindex("/")-1]
|
||||
elsif directory != ""
|
||||
return "/"
|
||||
end
|
||||
end
|
||||
|
||||
def update_metadata_object(user, directory, key, metadata)
|
||||
key = "rs_meta:#{user}:#{directory}/#{key}"
|
||||
redis.hmset(key, *metadata)
|
||||
redis_key = "rs_meta:#{user}:#{directory}/#{key}"
|
||||
redis.hmset(redis_key, *metadata)
|
||||
redis.sadd "rs_meta:#{user}:#{directory}/:items", key
|
||||
end
|
||||
|
||||
def update_dir_objects(user, directory)
|
||||
@ -278,6 +287,7 @@ module RemoteStorage
|
||||
key = "rs_meta:#{user}:#{dir}/"
|
||||
metadata = {etag: res.headers[:etag], modified: timestamp}
|
||||
redis.hmset(key, *metadata)
|
||||
redis.sadd "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/"
|
||||
end
|
||||
|
||||
true
|
||||
|
@ -39,6 +39,7 @@ describe "App" do
|
||||
RemoteStorage::Swift.stub_any_instance :has_name_collision?, false do
|
||||
RestClient.stub :put, put_stub do
|
||||
put "/phil/food/aguacate", "si"
|
||||
put "/phil/food/camaron", "yummi"
|
||||
end
|
||||
end
|
||||
|
||||
@ -46,6 +47,12 @@ describe "App" do
|
||||
metadata["etag"].must_equal "bla"
|
||||
metadata["modified"].length.must_equal 13
|
||||
metadata = redis.hgetall "rs_meta:phil:food/"
|
||||
|
||||
food_items = redis.smembers "rs_meta:phil:food/:items"
|
||||
food_items.must_equal ["camaron", "aguacate"]
|
||||
|
||||
root_items = redis.smembers "rs_meta:phil:/:items"
|
||||
root_items.must_equal ["food/"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user