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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 166f1e78e647f42d534f681e12d8e5d01d8be911
4
- data.tar.gz: 2c02687eacf9df2cc5313453d378c2c1a606be53
3
+ metadata.gz: eefd4de3e4e2853dde383386c3ae19aa0aa03c51
4
+ data.tar.gz: de1c220f5918925adedc7780a7a33fdd6078be41
5
5
  SHA512:
6
- metadata.gz: 00072324fcef2e55f356769d17cdba0e990295bd456afd467ed2813a94fa1b33be5adfc4963f4fa92d26d0b77db081fde97248941c0a8453d86cf97d37e783c0
7
- data.tar.gz: 3272b5dca20856d67d123ea0c4788a4fd4ebf9ee5d08f5016032b44889f03fb1561720f61dc7f1e32fe6372c937dd6bc4909be57ab9f0096518f80b87bada376
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
- self.class.delete_entry self
7
+ def delete
8
+ Database.instance.delete_record self
9
9
  end
10
10
 
11
11
  def save
12
12
  if persisted?
13
- self.class.update_database self
13
+ Database.instance.update_record self
14
14
  else
15
15
  self.id = Time.now.to_i
16
- self.class.append_to_database self
16
+ Database.instance.add_record self
17
17
  end
18
18
  end
19
19
 
@@ -9,11 +9,39 @@ module FileDb
9
9
 
10
10
  def search model
11
11
  return unless File.exist?(table_file(model))
12
- ::CSV.foreach(table_file(model)) do |row|
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
@@ -1,3 +1,3 @@
1
1
  module FileDb
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
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.2
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-27 00:00:00.000000000 Z
11
+ date: 2016-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler