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.
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