Class: Biblioteque::Database
- Inherits:
-
Model
- Object
- Model
- Biblioteque::Database
show all
- Defined in:
- lib/biblioteque/database.rb
Instance Attribute Summary collapse
Attributes inherited from Model
#created_at, #id, #name
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Model
generate_id, #save_to_file, #to_hash
Constructor Details
#initialize(params = {}) ⇒ Database
Returns a new instance of Database.
24
25
26
27
28
29
30
31
|
# File 'lib/biblioteque/database.rb', line 24
def initialize(params = {})
super
@libraries = []
@dbpath = params[:path]
@loaded = false
@library = nil
@to_hash_params = [:id, :name, :updated_at, :created_at]
end
|
Instance Attribute Details
#path ⇒ Object
Returns the value of attribute path.
3
4
5
|
# File 'lib/biblioteque/database.rb', line 3
def path
@path
end
|
#updated_at ⇒ Object
Returns the value of attribute updated_at.
3
4
5
|
# File 'lib/biblioteque/database.rb', line 3
def updated_at
@updated_at
end
|
Class Method Details
.clone(path_source, path_destination) ⇒ Object
14
15
16
17
18
|
# File 'lib/biblioteque/database.rb', line 14
def self.clone(path_source, path_destination)
raise "No" unless path_source || path_destination
FileUtils.cp(path_source, path_destination)
true
end
|
.create(name, path) ⇒ Object
5
6
7
8
9
10
11
12
|
# File 'lib/biblioteque/database.rb', line 5
def self.create(name, path)
raise "No" unless name || path
new_db = {id:generate_id,name:name,created_at:Time.now,updated_at:Time.now}
File.open(path,"w+") do |f|
f.write(new_db.to_json)
end
true
end
|
.destroy(path_source) ⇒ Object
20
21
22
|
# File 'lib/biblioteque/database.rb', line 20
def self.destroy(path_source)
File.delete(path_source) ? true : false
end
|
Instance Method Details
#close_library ⇒ Object
50
51
52
|
# File 'lib/biblioteque/database.rb', line 50
def close_library
@library = nil
end
|
#create_library(name) ⇒ Object
33
34
35
36
37
38
|
# File 'lib/biblioteque/database.rb', line 33
def create_library(name)
raise "No" unless name
lib = Library.create(name, self.id)
@libraries << lib
lib
end
|
#current_library ⇒ Object
54
55
56
|
# File 'lib/biblioteque/database.rb', line 54
def current_library
@library
end
|
#delete_library(id) ⇒ Object
93
94
95
96
97
|
# File 'lib/biblioteque/database.rb', line 93
def delete_library(id)
return false unless id.to_i
libraries.delete_if{|l| l.id == id }
true
end
|
#libraries ⇒ Object
58
59
60
|
# File 'lib/biblioteque/database.rb', line 58
def libraries
@libraries
end
|
#load ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/biblioteque/database.rb', line 62
def load
json = File.read(@dbpath)
db = JSON.parse(json)
self.id = db["id"]
self.name = db["name"]
self.path = @dbpath
self.created_at = db["created_at"]
self.updated_at = db["updated_at"]
load_libraries(db["libraries"])
@loaded = true
end
|
#load_library(library_id) ⇒ Object
40
41
42
43
44
45
46
47
48
|
# File 'lib/biblioteque/database.rb', line 40
def load_library(library_id)
@libraries.each do |lib|
if lib.id == library_id
@library = lib
return lib
end
end
nil
end
|
#save ⇒ Object
78
79
80
81
82
83
|
# File 'lib/biblioteque/database.rb', line 78
def save
db = self.to_hash
db[:libraries] = []
libraries.each{|l| db[:libraries] << l.to_hash }
save_to_file(@dbpath ,db.to_json)
end
|
#search(filter) ⇒ Object
85
86
87
88
89
90
91
|
# File 'lib/biblioteque/database.rb', line 85
def search(filter)
results = []
libraries.each do |l|
results << {library:l.id,results:l.search(filter)}
end
results
end
|
#status ⇒ Object
74
75
76
|
# File 'lib/biblioteque/database.rb', line 74
def status
@loaded ? "Loaded" : "Not Loaded"
end
|