Fix partition implementation.

paper
Philippe PITTOLI 2024-05-07 00:03:07 +02:00
parent b590cb9e0f
commit 351df7426f
1 changed files with 10 additions and 6 deletions

View File

@ -36,7 +36,10 @@ class DODB::Partition(V) < DODB::Indexer(V)
symlink = get_partition_symlink(partition, key)
::File.delete symlink
begin
::File.delete symlink
rescue File::NotFoundError
end
end
def get(partition) : Array(V)
@ -128,11 +131,11 @@ class DODB::CachedPartition(V) < DODB::Partition(V)
end
def get(partition)
r_value = Array(V).new
r_value = Array(Tuple(V, Int32)).new
if keys = @data[partition]?
keys.each do |data_key|
r_value << @storage[data_key]
r_value << { @storage[data_key], data_key }
end
else
# Get the key from the database representation on the file-system.
@ -140,10 +143,11 @@ class DODB::CachedPartition(V) < DODB::Partition(V)
raise MissingEntry.new(@name, partition) unless Dir.exists? partition_directory
Dir.each_child partition_directory do |child|
r_value << @storage[get_key child]
r_value << { @storage[get_key child], get_key child }
end
@data[partition] = r_value
@data[partition] = r_value.map &.[1]
end
r_value
r_value.map &.[0]
end
end