rowdb 0.1.0 → 0.2.0

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: 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