Class: CodebreakerRostik::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/storage.rb

Constant Summary collapse

PATH_TO_DB =
File.dirname(__FILE__) + '/db/db.yaml'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStorage

Returns a new instance of Storage.



6
7
8
# File 'lib/storage.rb', line 6

def initialize
  @db_user = []
end

Instance Attribute Details

#db_userObject (readonly)

Returns the value of attribute db_user.



3
4
5
# File 'lib/storage.rb', line 3

def db_user
  @db_user
end

Instance Method Details

#add_data_to_db(user) ⇒ Object



10
11
12
13
# File 'lib/storage.rb', line 10

def add_data_to_db(user)
  file_exist? ? add_data_to_old_info(user) : @db_user.push(user)
  write_to_db
end

#add_data_to_old_info(user) ⇒ Object



15
16
17
# File 'lib/storage.rb', line 15

def add_data_to_old_info(user)
  @db_user = load.push(user)
end

#file_exist?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/storage.rb', line 19

def file_exist?
  File.exist?(PATH_TO_DB)
end

#loadObject



27
28
29
# File 'lib/storage.rb', line 27

def load
  YAML.load_file(PATH_TO_DB)
end

#sort_db_info(data) ⇒ Object



23
24
25
# File 'lib/storage.rb', line 23

def sort_db_info(data)
  data.sort_by { |user| [user[:attempts_total], user[:attempts_used], user[:hints_used]] }
end

#write_to_dbObject



31
32
33
34
35
# File 'lib/storage.rb', line 31

def write_to_db
  db_file = File.open(PATH_TO_DB, 'w')
  db_file.write(@db_user.to_yaml)
  db_file.close
end