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
|
# TODO get last modified from response and add to metadata
|
||||||
metadata = {
|
metadata = {
|
||||||
etag: res.headers[:etag],
|
etag: res.headers[:etag],
|
||||||
size: data.length,
|
size: data.size,
|
||||||
type: content_type
|
type: content_type
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,9 +264,18 @@ module RemoteStorage
|
|||||||
parent_directories
|
parent_directories
|
||||||
end
|
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)
|
def update_metadata_object(user, directory, key, metadata)
|
||||||
key = "rs_meta:#{user}:#{directory}/#{key}"
|
redis_key = "rs_meta:#{user}:#{directory}/#{key}"
|
||||||
redis.hmset(key, *metadata)
|
redis.hmset(redis_key, *metadata)
|
||||||
|
redis.sadd "rs_meta:#{user}:#{directory}/:items", key
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_dir_objects(user, directory)
|
def update_dir_objects(user, directory)
|
||||||
@ -278,6 +287,7 @@ module RemoteStorage
|
|||||||
key = "rs_meta:#{user}:#{dir}/"
|
key = "rs_meta:#{user}:#{dir}/"
|
||||||
metadata = {etag: res.headers[:etag], modified: timestamp}
|
metadata = {etag: res.headers[:etag], modified: timestamp}
|
||||||
redis.hmset(key, *metadata)
|
redis.hmset(key, *metadata)
|
||||||
|
redis.sadd "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/"
|
||||||
end
|
end
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -39,6 +39,7 @@ describe "App" do
|
|||||||
RemoteStorage::Swift.stub_any_instance :has_name_collision?, false do
|
RemoteStorage::Swift.stub_any_instance :has_name_collision?, false do
|
||||||
RestClient.stub :put, put_stub do
|
RestClient.stub :put, put_stub do
|
||||||
put "/phil/food/aguacate", "si"
|
put "/phil/food/aguacate", "si"
|
||||||
|
put "/phil/food/camaron", "yummi"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -46,6 +47,12 @@ describe "App" do
|
|||||||
metadata["etag"].must_equal "bla"
|
metadata["etag"].must_equal "bla"
|
||||||
metadata["modified"].length.must_equal 13
|
metadata["modified"].length.must_equal 13
|
||||||
metadata = redis.hgetall "rs_meta:phil:food/"
|
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
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user