dddr 1.0.3 → 1.0.4
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 +16 -87
- 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: 6bbde5292a99fb4dea6c1553e4de93e54d2deadc52f198acba249addb00cb4f0
|
4
|
+
data.tar.gz: 4f771b22d6853b38c0e5ffc28264d6a8142a94667ff82cecd6f44bcaf1275fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0aeee8ae9c148560dc5fdaddbad1fb2c5dac593308317d402b94555f8036c51b781f12b19f66c5f2ae433ae8b601e197bee61a5752f07f3753f3ca1f923d5f6d
|
7
|
+
data.tar.gz: 7036c9c802ed2c858aac293e8572261c5b94d66c9d4bae4f16c230a6bc7133d837a6da79a8da70ab418a3616ea16fe183f480648a549199a351eb30900f2fa0c
|
data/lib/dddr/version.rb
CHANGED
data/lib/dddr.rb
CHANGED
@@ -8,16 +8,14 @@ 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 = "./.data"
|
18
|
+
yield(configuration) if block_given?
|
21
19
|
end
|
22
20
|
|
23
21
|
class Error < StandardError; end
|
@@ -27,7 +25,7 @@ module Dddr
|
|
27
25
|
base.extend(ClassMethods)
|
28
26
|
end
|
29
27
|
|
30
|
-
attr_accessor :uid, :created_at, :last_updated_at, :deleted
|
28
|
+
attr_accessor :uid, :created_at, :last_updated_at, :deleted, :deleted_at
|
31
29
|
|
32
30
|
module ClassMethods
|
33
31
|
def queries(&block)
|
@@ -48,25 +46,20 @@ module Dddr
|
|
48
46
|
end
|
49
47
|
|
50
48
|
if name == :Repository
|
51
|
-
|
49
|
+
|
52
50
|
repository_class = Class.new do
|
53
|
-
|
54
51
|
def initialize(entity_class = @@context)
|
55
52
|
@entity_class = entity_class
|
56
53
|
env = Dddr.configuration.env
|
57
54
|
`mkdir -p #{Dddr.configuration.data_dir}/#{env}`
|
58
55
|
@name = "#{Dddr.configuration.data_dir}/#{env}/#{entity_class.name}"
|
59
|
-
@cache = nil
|
60
|
-
load_cache if @cache.nil?
|
61
56
|
end
|
62
57
|
|
63
58
|
def add(entity)
|
64
59
|
uid = SecureRandom.uuid
|
65
|
-
|
66
|
-
entity.created_at
|
67
|
-
entity.last_updated_at
|
68
|
-
|
69
|
-
@cache << entity
|
60
|
+
entity.uid = uid
|
61
|
+
entity.created_at ||= DateTime.now.to_s
|
62
|
+
entity.last_updated_at ||= entity.created_at
|
70
63
|
|
71
64
|
SDBM.open(@name) do |db|
|
72
65
|
db[uid] = Marshal.dump(entity.to_hash)
|
@@ -82,9 +75,6 @@ module Dddr
|
|
82
75
|
|
83
76
|
def update(entity)
|
84
77
|
entity.last_updated_at = DateTime.now.to_s
|
85
|
-
|
86
|
-
@cache.map! { |e| e.uid == entity.uid ? entity : e }
|
87
|
-
|
88
78
|
SDBM.open(@name) do |db|
|
89
79
|
db[entity.uid] = Marshal.dump(entity.to_hash)
|
90
80
|
end
|
@@ -99,35 +89,9 @@ module Dddr
|
|
99
89
|
|
100
90
|
def delete(entity)
|
101
91
|
SDBM.open(@name) do |db|
|
102
|
-
entity.
|
103
|
-
entity.deleted_at = DateTime.now
|
104
|
-
update(entity)
|
92
|
+
db.delete(entity.uid)
|
105
93
|
end
|
106
|
-
|
107
|
-
@cache.reject! { |e| e.uid == entity.uid }
|
108
|
-
|
109
94
|
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
95
|
|
132
96
|
alias_method :remove, :delete
|
133
97
|
alias_method :erase, :delete
|
@@ -148,8 +112,9 @@ module Dddr
|
|
148
112
|
def reset!
|
149
113
|
if Dddr.configuration.env == "test"
|
150
114
|
all.map { |e| delete(e) }
|
151
|
-
return
|
115
|
+
return
|
152
116
|
end
|
117
|
+
|
153
118
|
puts "Warning: This will delete all records. Are you sure? (y/n)"
|
154
119
|
confirmation = gets.chomp
|
155
120
|
|
@@ -173,54 +138,16 @@ module Dddr
|
|
173
138
|
end
|
174
139
|
|
175
140
|
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
141
|
result = []
|
205
142
|
SDBM.open(@name) do |db|
|
206
143
|
db.each do |key, value|
|
207
|
-
data = Marshal.load(value)
|
208
144
|
entity = @entity_class.new
|
209
|
-
entity.from_hash(key,
|
210
|
-
|
211
|
-
result << entity
|
145
|
+
entity.from_hash(key, Marshal.load(value))
|
146
|
+
result << entity unless entity.deleted
|
212
147
|
end
|
213
148
|
end
|
214
149
|
result
|
215
150
|
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
151
|
end
|
225
152
|
|
226
153
|
if defined?(@@queries)
|
@@ -260,4 +187,6 @@ module Dddr
|
|
260
187
|
end
|
261
188
|
|
262
189
|
# Your code goes here...
|
263
|
-
end
|
190
|
+
end
|
191
|
+
|
192
|
+
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.4
|
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-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sdbm
|