rowdb 0.1.4 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a801c8e2801be1228481aef0e73eef1182c6f13a8d61db4fcfa9443e070170c1
4
- data.tar.gz: e05dcf84d5a322f91462b3082f9abcd65e35cf789b05923ec1857ac384825001
3
+ metadata.gz: 39c1806858f1a8d306f1ee05349654b9d368a8236f67ac980263639a0ba799b5
4
+ data.tar.gz: 128eb45b82377dc04fa2ea226c1f962f18a494e7778f8da83c2fd0eaa0fa18cb
5
5
  SHA512:
6
- metadata.gz: ec59c9473e130a4cdc41444828c64935d986d9422f421654ec683d684e26c930a1945832cedf5802f59815da4066727157f9b34df227d6d4b983e37896a51307
7
- data.tar.gz: d1cf36a921addad664868c747598b81bd0111e208a3718a9e51e7b41be41dd5a23d855c9374b0cbcf1736c4eefa6e0733862c45ecc6ab1a1757210bfae12ef16
6
+ metadata.gz: c3c28ad22face7a22ed466bfe3d61b2c82ef8aee4a22d8d275979b4d9bbbaa9bef9b7b1b32150449f321b3ed4ab745e52fe7cc48df27049b917d8f94c36da175
7
+ data.tar.gz: dd270b13e87c11753d2cdc50baf277c45cdd9fb637448e740ba3caeca40be4c107797b38fa9073b6bd71f3316d6462779d4e051849b566ccef55bd25c454d45f
@@ -1,7 +1,10 @@
1
1
  require 'oj'
2
2
  require_relative 'Adapter.rb'
3
3
 
4
- class FileSystem < Adapter
4
+ ##
5
+ # Synchronous file system.
6
+ ##
7
+ class Sync < Adapter
5
8
 
6
9
  ##
7
10
  # Load a JSON string from a file.
@@ -13,7 +16,8 @@ class FileSystem < Adapter
13
16
  json = Oj.load_file(@source)
14
17
 
15
18
  unless json.nil?
16
- return Oj.load(json)
19
+ data = Oj.load(json)
20
+ return data.transform_keys(&:to_sym)
17
21
  end
18
22
 
19
23
  return nil
@@ -27,7 +31,7 @@ class FileSystem < Adapter
27
31
  ##
28
32
  def write(data)
29
33
 
30
- json = Oj.dump(data)
34
+ json = Oj.dump(data, mode: :compat)
31
35
  Oj.to_file(@source, json)
32
36
 
33
37
  end
@@ -1,35 +1,61 @@
1
1
  require 'rudash'
2
- require_relative 'adapters/FileSystem.rb'
2
+ require_relative 'adapters/Sync.rb'
3
3
 
4
4
  class Rowdb
5
5
 
6
- def initialize(adapter = :file_system, file_path)
6
+ def initialize(file_path, adapter = :sync)
7
7
  @adapter = self.send(adapter, normalize_path(file_path))
8
- @data = @adapter.read()
8
+ @chain = R_.chain(@adapter.read())
9
+ @get_path = nil
9
10
  end
10
11
 
12
+ # Set default data.
11
13
  def defaults(data)
12
- if @data.nil?
13
- # Load default data.
14
- @data = data
15
- # Save data to disk.
16
- @adapter.write(data)
14
+ if @chain.value().nil?
15
+ @chain = R_.chain(data.transform_keys(&:to_sym))
17
16
  end
17
+ self
18
18
  end
19
19
 
20
20
  def get(path)
21
- R_.get(@data, path)
21
+ @get_path = path
22
+ @chain.get(path)
23
+ self
22
24
  end
23
25
 
24
26
  def set(path, value)
25
- @data = R_.set(@data, path, value)
26
- @adapter.write(@data)
27
+ @chain.set(path, value)
28
+ self
29
+ end
30
+
31
+ def value()
32
+ @chain.value()
33
+ end
34
+
35
+ def push(value)
36
+
37
+ if @get_path.nil?
38
+ raise StandardError.new "You must get() before push()."
39
+ end
40
+
41
+ # Add value to end of array.
42
+ adder = -> (items) {
43
+ [*items, value]
44
+ }
45
+ R_.update(@chain.value(), @get_path, adder)
46
+
47
+ self
48
+ end
49
+
50
+ def write()
51
+ @adapter.write(@chain.value())
52
+ self
27
53
  end
28
54
 
29
55
  private
30
56
 
31
- def file_system(file_path)
32
- FileSystem.new(file_path)
57
+ def sync(file_path)
58
+ Sync.new(file_path)
33
59
  end
34
60
 
35
61
  ##
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rowdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maedi Prichard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-29 00:00:00.000000000 Z
11
+ date: 2020-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -38,16 +38,17 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: A local JSON database for Ruby inspired by lowdb.
41
+ description: A local JSON database for Ruby inspired by lowdb, using Rudash for easy
42
+ Hash traversal.
42
43
  email: maediprichard@gmailcom
43
44
  executables: []
44
45
  extensions: []
45
46
  extra_rdoc_files: []
46
47
  files:
47
48
  - lib/adapters/Adapter.rb
48
- - lib/adapters/FileSystem.rb
49
+ - lib/adapters/Sync.rb
49
50
  - lib/rowdb.rb
50
- homepage: https://github.com/maedi/rowdb
51
+ homepage: https://github.com/rowdb/rowdb
51
52
  licenses:
52
53
  - MPL-2.0
53
54
  metadata: {}