file_db 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/file_db/data.rb +4 -4
- data/lib/file_db/database.rb +57 -1
- data/lib/file_db/table.rb +0 -39
- data/lib/file_db/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eefd4de3e4e2853dde383386c3ae19aa0aa03c51
|
4
|
+
data.tar.gz: de1c220f5918925adedc7780a7a33fdd6078be41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee185e482a0709dbe926238c38231a2fd715544ffcb35ad674b2ebdc4d595d382ad7a7eb470eba4729b81398dd00a696ec6e2df2ede406b8e2e3d6c6bacef36f
|
7
|
+
data.tar.gz: 7f10cec2afe1e8f6c066f92fc89bd558a8332c7339f7d3af9e1f2335e808100c068160bd367f4503a824e17197a281b82616d1c6cecda9979635bc5641f0ae75
|
data/lib/file_db/data.rb
CHANGED
@@ -4,16 +4,16 @@ module FileDb
|
|
4
4
|
load_params_into_model params
|
5
5
|
end
|
6
6
|
|
7
|
-
def delete
|
8
|
-
|
7
|
+
def delete
|
8
|
+
Database.instance.delete_record self
|
9
9
|
end
|
10
10
|
|
11
11
|
def save
|
12
12
|
if persisted?
|
13
|
-
|
13
|
+
Database.instance.update_record self
|
14
14
|
else
|
15
15
|
self.id = Time.now.to_i
|
16
|
-
|
16
|
+
Database.instance.add_record self
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
data/lib/file_db/database.rb
CHANGED
@@ -9,11 +9,39 @@ module FileDb
|
|
9
9
|
|
10
10
|
def search model
|
11
11
|
return unless File.exist?(table_file(model))
|
12
|
-
|
12
|
+
read_from_table model do |row|
|
13
13
|
yield row
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
def delete_record record
|
18
|
+
records = []
|
19
|
+
read_from_table record.class do |row|
|
20
|
+
next if row[0]==record.id.to_s
|
21
|
+
records << build_object(record.class, row)
|
22
|
+
end
|
23
|
+
|
24
|
+
rebuild_table! record.class, records
|
25
|
+
end
|
26
|
+
|
27
|
+
def update_record record
|
28
|
+
records = []
|
29
|
+
read_from_table record.class do |row|
|
30
|
+
if row[0]==record.id.to_s
|
31
|
+
records << record
|
32
|
+
else
|
33
|
+
records << build_object(record.class, row)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
rebuild_table! record.class, records
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_record record
|
40
|
+
write_to_table record.class, :a do
|
41
|
+
record
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
17
45
|
def exist_data_directory?
|
18
46
|
File.exist? data_directory
|
19
47
|
end
|
@@ -24,6 +52,34 @@ module FileDb
|
|
24
52
|
|
25
53
|
private
|
26
54
|
|
55
|
+
def build_object clazz, data
|
56
|
+
hash = {}
|
57
|
+
clazz.columns.each do |column|
|
58
|
+
hash[column] = data[clazz.column_index(column)]
|
59
|
+
end
|
60
|
+
clazz.new hash
|
61
|
+
end
|
62
|
+
|
63
|
+
def read_from_table clazz
|
64
|
+
::CSV.foreach(table_file(clazz)) do |row|
|
65
|
+
yield(row)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def write_to_table clazz, mode = 'w'
|
70
|
+
::CSV.open(table_file(clazz), mode.to_s) do |csv|
|
71
|
+
[yield].flatten.each do |record|
|
72
|
+
csv << record.to_csv
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def rebuild_table! clazz, records
|
78
|
+
write_to_table clazz do
|
79
|
+
records
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
27
83
|
def table_file model
|
28
84
|
File.join(data_directory, "#{model.table_name}.csv")
|
29
85
|
end
|
data/lib/file_db/table.rb
CHANGED
@@ -13,44 +13,5 @@ module FileDb
|
|
13
13
|
object.save
|
14
14
|
object
|
15
15
|
end
|
16
|
-
|
17
|
-
def rebuild_file! entries
|
18
|
-
::CSV.open(table_file_location, "w") do |csv|
|
19
|
-
entries.each do |entry|
|
20
|
-
csv << entry
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def append_to_database entry_object
|
26
|
-
::CSV.open(table_file_location, "a") do |csv|
|
27
|
-
csv << entry_object.to_csv
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def delete_entry entry
|
32
|
-
records = []
|
33
|
-
::CSV.foreach(table_file_location) do |row|
|
34
|
-
next if row[0]==entry.id.to_s
|
35
|
-
records << row
|
36
|
-
end
|
37
|
-
rebuild_file! records
|
38
|
-
end
|
39
|
-
|
40
|
-
def update_database entry_object
|
41
|
-
records = []
|
42
|
-
::CSV.foreach(table_file_location) do |row|
|
43
|
-
if row[0]==entry_object.id.to_s
|
44
|
-
records << entry_object.to_csv
|
45
|
-
else
|
46
|
-
records << row
|
47
|
-
end
|
48
|
-
end
|
49
|
-
rebuild_file! records
|
50
|
-
end
|
51
|
-
|
52
|
-
def table_file_location
|
53
|
-
File.join(Configuration.configured(:data_directory), "#{table_name}.csv")
|
54
|
-
end
|
55
16
|
end
|
56
17
|
end
|
data/lib/file_db/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Starke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|