class FileDb::System::Database

Attributes

tables[RW]

Public Class Methods

new(data_directory) click to toggle source
# File lib/file_db/system/database.rb, line 7
def initialize data_directory
  @data_directory = data_directory
  create_database_if_not_exist!
  load_tables!
end

Public Instance Methods

check_table!(table_name) click to toggle source
# File lib/file_db/system/database.rb, line 38
def check_table! table_name
  return if @tables[table_name]
  create_table_file! table_name
end
create_database_if_not_exist!() click to toggle source
# File lib/file_db/system/database.rb, line 25
def create_database_if_not_exist!
  return if exist_data_directory?
  create_data_directory!
end
drop_data_directory!() click to toggle source
# File lib/file_db/system/database.rb, line 30
def drop_data_directory!
  ::FileUtils.rm_rf @data_directory
end
load_table!(filename) click to toggle source
# File lib/file_db/system/database.rb, line 21
def load_table! filename
  @tables[cleared_tablename(filename)] = Table.new(filename, self)
end
load_tables!() click to toggle source
# File lib/file_db/system/database.rb, line 13
def load_tables!
  @tables = {}
  Dir[File.join(@data_directory, "*.csv")].each do |filename|
    next unless File.file?(filename)
    load_table! filename
  end
end
save_to_disk(table, content) click to toggle source
# File lib/file_db/system/database.rb, line 34
def save_to_disk table, content
  File.write(table.filename, content)
end

Private Instance Methods

cleared_tablename(filename) click to toggle source
# File lib/file_db/system/database.rb, line 45
def cleared_tablename filename
  filename = filename.gsub '.csv', ''
  filename = filename.gsub @data_directory, ''
  filename = filename.gsub '/', ''
  filename.to_sym
end
create_data_directory!() click to toggle source
# File lib/file_db/system/database.rb, line 56
def create_data_directory!
  Dir.mkdir @data_directory
end
create_table_file!(table_name) click to toggle source
# File lib/file_db/system/database.rb, line 60
def create_table_file! table_name
  File.write(File.join(@data_directory, "#{table_name}.csv"), '')
  load_table! File.join(@data_directory, "#{table_name}.csv")
end
exist_data_directory?() click to toggle source
# File lib/file_db/system/database.rb, line 52
def exist_data_directory?
  File.exist? @data_directory
end