dddr 1.0.3 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dddr/version.rb +1 -1
  3. data/lib/dddr.rb +20 -89
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c40da5a9a83abb1bd1f6bb3391f774a52025c598b5a9d74c52fa8c76d2695119
4
- data.tar.gz: d24a0883d829329371894ae5fa6c8360aa583c227875b6720477363c97befeaf
3
+ metadata.gz: 2da332f599be7d13a4adedc658585790e89e0858c4099fb99e9290ca037479c7
4
+ data.tar.gz: b40d4436c2b3865c036ff66212bc9bb4bb848732d0092ed039155700c88858bf
5
5
  SHA512:
6
- metadata.gz: ac30bebd6baee07b567f0d4274c189c73043def0632f58673837e00679f3102a3cbb09b23dc1d0d1dc733639c1c7c2aacf36f4a9bbb8195387d9ca018c772700
7
- data.tar.gz: 73c1ecf97505e7705a87d0d37931e88c2265bc021f1d16d31f5e7b6a4b3bedd6be69096efb69157d7699e437c79b0f5ffd001ceec01bb310a2fdef2b11f07e36
6
+ metadata.gz: 58d83c8ba4c954fda9ad24ab1dfc3990e388b882c0052184519f64aeb992430c029a22a7b26cd1cd6ec0e710e862fe59ec630560031b93ed9b1da70636756739
7
+ data.tar.gz: bddfecd4503655e41c43eed62ee0108ff7ecb82fc97baf997deae8ac28584ae38dae3bb9b0ce2085e8f7643d5d9e0252df68f2b521136cc3c7a646a0a7a05e71
data/lib/dddr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dddr
4
- VERSION = "1.0.3"
4
+ VERSION = "1.0.5"
5
5
  end
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
- yield(configuration)
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,:deleted_at
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.nil? ? DateTime.now.to_s : entity.created_at
67
- entity.last_updated_at.nil? ? entity.created_at : 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.deleted = true
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, data)
210
- next unless entity.deleted
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.3
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-03 00:00:00.000000000 Z
11
+ date: 2023-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sdbm