dddr 1.0.3 → 1.0.5
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/dddr/version.rb +1 -1
- data/lib/dddr.rb +20 -89
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2da332f599be7d13a4adedc658585790e89e0858c4099fb99e9290ca037479c7
|
4
|
+
data.tar.gz: b40d4436c2b3865c036ff66212bc9bb4bb848732d0092ed039155700c88858bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58d83c8ba4c954fda9ad24ab1dfc3990e388b882c0052184519f64aeb992430c029a22a7b26cd1cd6ec0e710e862fe59ec630560031b93ed9b1da70636756739
|
7
|
+
data.tar.gz: bddfecd4503655e41c43eed62ee0108ff7ecb82fc97baf997deae8ac28584ae38dae3bb9b0ce2085e8f7643d5d9e0252df68f2b521136cc3c7a646a0a7a05e71
|
data/lib/dddr/version.rb
CHANGED
data/lib/dddr.rb
CHANGED
@@ -8,16 +8,15 @@ require "ostruct"
|
|
8
8
|
require_relative "dddr/version"
|
9
9
|
|
10
10
|
module Dddr
|
11
|
-
|
12
11
|
def self.configuration
|
13
12
|
@configuration ||= OpenStruct.new
|
14
|
-
@configuration.env = ENV['DDDR_ENV'] || 'development'
|
15
|
-
@configuration.data_dir = "./.data"
|
16
|
-
@configuration
|
17
13
|
end
|
18
14
|
|
19
15
|
def self.configure
|
20
|
-
|
16
|
+
configuration.env = ENV["DDDR_ENV"] || "development"
|
17
|
+
configuration.data_dir = "/var/dddr"
|
18
|
+
configuration.container = "#{File.basename(Dir.pwd)}"
|
19
|
+
yield(configuration) if block_given?
|
21
20
|
end
|
22
21
|
|
23
22
|
class Error < StandardError; end
|
@@ -27,7 +26,7 @@ module Dddr
|
|
27
26
|
base.extend(ClassMethods)
|
28
27
|
end
|
29
28
|
|
30
|
-
attr_accessor :uid, :created_at, :last_updated_at, :deleted
|
29
|
+
attr_accessor :uid, :created_at, :last_updated_at, :deleted, :deleted_at
|
31
30
|
|
32
31
|
module ClassMethods
|
33
32
|
def queries(&block)
|
@@ -41,6 +40,7 @@ module Dddr
|
|
41
40
|
end
|
42
41
|
|
43
42
|
def const_missing(name)
|
43
|
+
|
44
44
|
@@context = self
|
45
45
|
|
46
46
|
if defined?(self::Queries)
|
@@ -48,25 +48,20 @@ module Dddr
|
|
48
48
|
end
|
49
49
|
|
50
50
|
if name == :Repository
|
51
|
-
|
51
|
+
|
52
52
|
repository_class = Class.new do
|
53
|
-
|
54
53
|
def initialize(entity_class = @@context)
|
55
54
|
@entity_class = entity_class
|
56
55
|
env = Dddr.configuration.env
|
57
|
-
`mkdir -p #{Dddr.configuration.data_dir}/#{env}
|
58
|
-
@name = "#{Dddr.configuration.data_dir}/#{env}/#{entity_class.name}"
|
59
|
-
@cache = nil
|
60
|
-
load_cache if @cache.nil?
|
56
|
+
`mkdir -p #{Dddr.configuration.data_dir}/#{Dddr.configuration.container}/#{env}/`
|
57
|
+
@name = "#{Dddr.configuration.data_dir}/#{Dddr.configuration.container}/#{env}/#{entity_class.name.downcase}"
|
61
58
|
end
|
62
59
|
|
63
60
|
def add(entity)
|
64
61
|
uid = SecureRandom.uuid
|
65
|
-
|
66
|
-
entity.created_at
|
67
|
-
entity.last_updated_at
|
68
|
-
|
69
|
-
@cache << entity
|
62
|
+
entity.uid = uid
|
63
|
+
entity.created_at ||= DateTime.now.to_s
|
64
|
+
entity.last_updated_at ||= entity.created_at
|
70
65
|
|
71
66
|
SDBM.open(@name) do |db|
|
72
67
|
db[uid] = Marshal.dump(entity.to_hash)
|
@@ -82,9 +77,6 @@ module Dddr
|
|
82
77
|
|
83
78
|
def update(entity)
|
84
79
|
entity.last_updated_at = DateTime.now.to_s
|
85
|
-
|
86
|
-
@cache.map! { |e| e.uid == entity.uid ? entity : e }
|
87
|
-
|
88
80
|
SDBM.open(@name) do |db|
|
89
81
|
db[entity.uid] = Marshal.dump(entity.to_hash)
|
90
82
|
end
|
@@ -99,35 +91,9 @@ module Dddr
|
|
99
91
|
|
100
92
|
def delete(entity)
|
101
93
|
SDBM.open(@name) do |db|
|
102
|
-
entity.
|
103
|
-
entity.deleted_at = DateTime.now
|
104
|
-
update(entity)
|
94
|
+
db.delete(entity.uid)
|
105
95
|
end
|
106
|
-
|
107
|
-
@cache.reject! { |e| e.uid == entity.uid }
|
108
|
-
|
109
96
|
end
|
110
|
-
|
111
|
-
def undelete(uid)
|
112
|
-
e = bin.find{|e| e.uid == uid}
|
113
|
-
e.deleted = false
|
114
|
-
e.deleted_at = nil
|
115
|
-
update(e)
|
116
|
-
end
|
117
|
-
# Aliases for 'undelete' method
|
118
|
-
alias restore undelete
|
119
|
-
alias recover undelete
|
120
|
-
|
121
|
-
|
122
|
-
def undelete_all
|
123
|
-
bin.each do |e|
|
124
|
-
restore(e.uid)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
alias restore_all undelete_all
|
129
|
-
alias recover_all undelete_all
|
130
|
-
|
131
97
|
|
132
98
|
alias_method :remove, :delete
|
133
99
|
alias_method :erase, :delete
|
@@ -148,8 +114,9 @@ module Dddr
|
|
148
114
|
def reset!
|
149
115
|
if Dddr.configuration.env == "test"
|
150
116
|
all.map { |e| delete(e) }
|
151
|
-
return
|
117
|
+
return
|
152
118
|
end
|
119
|
+
|
153
120
|
puts "Warning: This will delete all records. Are you sure? (y/n)"
|
154
121
|
confirmation = gets.chomp
|
155
122
|
|
@@ -173,54 +140,16 @@ module Dddr
|
|
173
140
|
end
|
174
141
|
|
175
142
|
def all
|
176
|
-
load_cache if @cache.nil?
|
177
|
-
@cache
|
178
|
-
end
|
179
|
-
|
180
|
-
def clear_cache
|
181
|
-
@cache = nil
|
182
|
-
end
|
183
|
-
|
184
|
-
def refresh_cache
|
185
|
-
load_cache
|
186
|
-
end
|
187
|
-
|
188
|
-
|
189
|
-
def load_cache
|
190
|
-
result = []
|
191
|
-
SDBM.open(@name) do |db|
|
192
|
-
db.each do |key, value|
|
193
|
-
data = Marshal.load(value)
|
194
|
-
entity = @entity_class.new
|
195
|
-
entity.from_hash(key, data)
|
196
|
-
next if entity.deleted
|
197
|
-
result << entity
|
198
|
-
end
|
199
|
-
end
|
200
|
-
@cache = result
|
201
|
-
end
|
202
|
-
|
203
|
-
def bin
|
204
143
|
result = []
|
205
144
|
SDBM.open(@name) do |db|
|
206
145
|
db.each do |key, value|
|
207
|
-
data = Marshal.load(value)
|
208
146
|
entity = @entity_class.new
|
209
|
-
entity.from_hash(key,
|
210
|
-
|
211
|
-
result << entity
|
147
|
+
entity.from_hash(key, Marshal.load(value))
|
148
|
+
result << entity unless entity.deleted
|
212
149
|
end
|
213
150
|
end
|
214
151
|
result
|
215
152
|
end
|
216
|
-
|
217
|
-
def empty_bin
|
218
|
-
SDBM.open(@name) do |db|
|
219
|
-
bin.each do |e|
|
220
|
-
db.delete(e.uid)
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|
224
153
|
end
|
225
154
|
|
226
155
|
if defined?(@@queries)
|
@@ -260,4 +189,6 @@ module Dddr
|
|
260
189
|
end
|
261
190
|
|
262
191
|
# Your code goes here...
|
263
|
-
end
|
192
|
+
end
|
193
|
+
|
194
|
+
Dddr.configure
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dddr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delaney Burke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sdbm
|