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 +4 -4
- data/lib/adapters/Adapter.rb +7 -0
- data/lib/adapters/Sync.rb +38 -0
- data/lib/rowdb.rb +48 -11
- metadata +18 -3
- data/lib/adapters/FileSystem.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cf7404b803a91a97b9559d4505e3473bfc473ce9d8263611126df0a1769fb63
|
4
|
+
data.tar.gz: '08f244e70a79daeea781893beac76fbc6cdfba71f5ba1745c086daf21de55553'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fae4984ed663c29927c3b0116fdc73bd0b04f8c0668f6a2b69bfc7d98568167d7d0e238dee39db06377b23b2f8d5eb9a422b89e4617b429c600901fcb437cecd
|
7
|
+
data.tar.gz: ede01a4637d98a31b6956058c1069b0562edc5faa3e01c6b907754006797407d0b27b3e2ca2f6792a33567334bc386c079e234a42f64ede63aa0aa6f46863ed2
|
@@ -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
|
data/lib/rowdb.rb
CHANGED
@@ -1,27 +1,64 @@
|
|
1
|
-
require '
|
2
|
-
require_relative 'adapters/
|
1
|
+
require 'rudash'
|
2
|
+
require_relative 'adapters/Sync.rb'
|
3
3
|
|
4
|
-
class
|
4
|
+
class Rowdb
|
5
5
|
|
6
|
-
def initialize(adapter = :file_system,
|
7
|
-
@adapter = self.send(adapter,
|
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(
|
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
|
-
|
13
|
-
@
|
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
|
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
|
24
|
-
|
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.
|
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-
|
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/
|
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:
|