dddr 1.0.3 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|