rowdb 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: d7f2ba9f984064ae2cb7b888a8633d9950bb97c1b0ba9942c02fc2200257a657
4
- data.tar.gz: 7a2431fe8c01454d2a7dbbc62e64aa317bf326846334d786e40dcca3f12669e0
3
+ metadata.gz: 3cf7404b803a91a97b9559d4505e3473bfc473ce9d8263611126df0a1769fb63
4
+ data.tar.gz: '08f244e70a79daeea781893beac76fbc6cdfba71f5ba1745c086daf21de55553'
5
5
  SHA512:
6
- metadata.gz: 638fd3e981cb17fd9a3cfe41d86f5ccc8dbbc3b5482a8b16cfcea430d6780814a9e00e51df9a5f5729e822a70f2a9c1693aeb75020ff4ac693e3cd35feb4821e
7
- data.tar.gz: d554a9403948767eea5b20df3954c85f3799c3b4af2ff825815271568b37f776124d3fe8492a89cfcccb85e3cb665ba6144d2c4e2b75ce574926777a78ed777b
6
+ metadata.gz: fae4984ed663c29927c3b0116fdc73bd0b04f8c0668f6a2b69bfc7d98568167d7d0e238dee39db06377b23b2f8d5eb9a422b89e4617b429c600901fcb437cecd
7
+ data.tar.gz: ede01a4637d98a31b6956058c1069b0562edc5faa3e01c6b907754006797407d0b27b3e2ca2f6792a33567334bc386c079e234a42f64ede63aa0aa6f46863ed2
@@ -0,0 +1,7 @@
1
+ class Adapter
2
+
3
+ def initialize(source)
4
+ @source = source
5
+ end
6
+
7
+ end
@@ -0,0 +1,38 @@
1
+ require 'oj'
2
+ require_relative 'Adapter.rb'
3
+
4
+ ##
5
+ # Synchronous file system.
6
+ ##
7
+ class Sync < Adapter
8
+
9
+ ##
10
+ # Load a JSON string from a file.
11
+ #
12
+ # @return Hash data
13
+ ##
14
+ def read()
15
+
16
+ json = Oj.load_file(@source)
17
+
18
+ unless json.nil?
19
+ return Oj.load(json)
20
+ end
21
+
22
+ return nil
23
+
24
+ end
25
+
26
+ ##
27
+ # Save a Hash to a file as JSON.
28
+ #
29
+ # @param Hash data
30
+ ##
31
+ def write(data)
32
+
33
+ json = Oj.dump(data)
34
+ Oj.to_file(@source, json)
35
+
36
+ end
37
+
38
+ end
@@ -1,27 +1,64 @@
1
- require 'oj'
2
- require_relative 'adapters/FileSystem.rb'
1
+ require 'rudash'
2
+ require_relative 'adapters/Sync.rb'
3
3
 
4
- class Rehash
4
+ class Rowdb
5
5
 
6
- def initialize(adapter = :file_system, filepath)
7
- @adapter = self.send(adapter, filepath)
6
+ def initialize(adapter = :file_system, file_path)
7
+ @adapter = self.send(adapter, normalize_path(file_path))
8
+ @data = R_.chain(@adapter.read())
8
9
  end
9
10
 
10
- def defaults(hash)
11
+ def defaults(data)
12
+ if @data.value().nil?
13
+ # Load default data.
14
+ @data = R_.chain(data)
15
+ # Save data to disk.
16
+ @adapter.write(data)
17
+ end
18
+ self
19
+ end
11
20
 
12
- json = Oj.dump(hash)
13
- @adapter.write(json)
21
+ def get(path)
22
+ @data.get(path)
23
+ self
24
+ end
14
25
 
26
+ def set(path, value)
27
+ @data.set(path, value)
28
+ self
15
29
  end
16
30
 
17
- def get(item)
31
+ def value()
32
+ @data.value()
33
+ end
18
34
 
35
+ def write()
36
+ @adapter.write(@data.value())
19
37
  end
20
38
 
21
39
  private
22
40
 
23
- def file_system(filepath)
24
- FileSystem.new(filepath)
41
+ def sync(file_path)
42
+ Sync.new(file_path)
43
+ end
44
+
45
+ ##
46
+ # Normalize path.
47
+ #
48
+ # @param file_path - An absolute or relative path.
49
+ # @return An absolute path.
50
+ ##
51
+ def normalize_path(file_path)
52
+
53
+ # Absolute path.
54
+ if file_path.start_with? '/'
55
+ return file_path
56
+ # Relative path.
57
+ else
58
+ # Get directory the script executed from.
59
+ return File.join(Dir.pwd, '/' + file_path)
60
+ end
61
+
25
62
  end
26
63
 
27
64
  end
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.0
4
+ version: 0.2.0
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-23 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -24,13 +24,28 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rudash
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: A local JSON database for Ruby inspired by lowdb.
28
42
  email: maediprichard@gmailcom
29
43
  executables: []
30
44
  extensions: []
31
45
  extra_rdoc_files: []
32
46
  files:
33
- - lib/adapters/FileSystem.rb
47
+ - lib/adapters/Adapter.rb
48
+ - lib/adapters/Sync.rb
34
49
  - lib/rowdb.rb
35
50
  homepage: https://github.com/maedi/rowdb
36
51
  licenses:
@@ -1,17 +0,0 @@
1
- require_relative 'Adapter.rb'
2
-
3
- class FileSystem < Adapter
4
-
5
- def read()
6
-
7
- p Oj.load_file(@source)
8
-
9
- end
10
-
11
- def write(json)
12
-
13
- Oj.to_file(@source, json)
14
-
15
- end
16
-
17
- end