Delete metadata from Redis when deleting objects

This commit is contained in:
Garret Alfert
2016-01-22 16:04:28 -05:00
parent 02e5d0b5ab
commit 25c170021e
2 changed files with 93 additions and 2 deletions

View File

@@ -152,6 +152,7 @@ module RemoteStorage
end
do_delete_request(url)
delete_metadata_objects(user, directory, key)
delete_dir_objects(user, directory)
server.halt 200
@@ -299,13 +300,23 @@ module RemoteStorage
false
end
def delete_metadata_objects(user, directory, key)
redis_key = "rs_meta:#{user}:#{directory}/#{key}"
redis.del(redis_key)
redis.srem "rs_meta:#{user}:#{directory}/:items", key
end
def delete_dir_objects(user, directory)
parent_directories_for(directory).each do |dir|
if dir_empty?(user, dir)
do_delete_request("#{url_for_directory(user, dir)}/")
redis.del "rs_meta:#{user}:#{directory}/"
redis.srem "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/"
else
timestamp = (Time.now.to_f * 1000).to_i
do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain")
res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain")
metadata = {etag: res.headers[:etag], modified: timestamp}
redis.hmset("rs_meta:#{user}:#{dir}/", *metadata)
end
end
end