Class: Relish
- Inherits:
-
Object
show all
- Defined in:
- lib/relish.rb,
lib/relish/release.rb,
lib/relish/version.rb,
lib/relish/s3_helper.rb,
lib/relish/dynamo_helper.rb,
lib/relish/encryption_helper.rb
Defined Under Namespace
Classes: DynamoHelper, EncryptionHelper, Release, S3Helper
Constant Summary
collapse
- VERSION =
"1.0.0"
Instance Method Summary
collapse
-
#copy(id, version, data) ⇒ Object
-
#create(id, data) ⇒ Object
-
#current(id, *attrs) ⇒ Object
-
#delete(id, version) ⇒ Object
-
#dump(id, consistent = nil, limit = nil) ⇒ Object
-
#initialize(*args) ⇒ Relish
constructor
A new instance of Relish.
-
#read(id, version, *attrs) ⇒ Object
-
#rescue_dynamodb_error ⇒ Object
-
#set_error_handler(&blk) ⇒ Object
-
#update(id, version, data) ⇒ Object
Constructor Details
#initialize(*args) ⇒ Relish
Returns a new instance of Relish.
8
9
10
11
|
# File 'lib/relish.rb', line 8
def initialize(*args)
@db = DynamoHelper.new(*args)
@tries = 3
end
|
Instance Method Details
#copy(id, version, data) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/relish.rb', line 13
def copy(id, version, data)
rescue_dynamodb_error do
Release.new.tap do |release|
release.item = {}
release.id = id
release.version = version.to_s
data.each do |k, v|
release.send("#{k}=", v.to_s) unless v.nil?
end
@db.put(release.item)
end
end
end
|
#create(id, data) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/relish.rb', line 27
def create(id, data)
rescue_dynamodb_error do
item = @db.query_latest_version(id)
Release.new.tap do |release|
if item.nil?
release.item = {}
release.id = id
release.version = "1"
else
release.item = item
release.version = (release.version.to_i + 1).to_s
end
data.each do |k, v|
release.send("#{k}=", v.to_s) unless v.nil?
end
@db.put_current_version(release.item)
end
end
end
|
#current(id, *attrs) ⇒ Object
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/relish.rb', line 47
def current(id, *attrs)
rescue_dynamodb_error do
item = @db.query_current_version(id, *attrs)
unless item.nil?
Release.new.tap do |release|
release.item = item
end
end
end
end
|
#delete(id, version) ⇒ Object
95
96
97
98
99
|
# File 'lib/relish.rb', line 95
def delete(id, version)
rescue_dynamodb_error do
@db.delete_version(id, version)
end
end
|
#dump(id, consistent = nil, limit = nil) ⇒ Object
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/relish.rb', line 69
def dump(id, consistent=nil, limit=nil)
rescue_dynamodb_error do
items = @db.query(id, consistent, limit)
items.map do |item|
Release.new.tap do |release|
release.item = item
end
end
end
end
|
#read(id, version, *attrs) ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/relish.rb', line 58
def read(id, version, *attrs)
rescue_dynamodb_error do
item = @db.get_version(id, version, *attrs)
unless item.nil?
Release.new.tap do |release|
release.item = item
end
end
end
end
|
#rescue_dynamodb_error ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/relish.rb', line 105
def rescue_dynamodb_error
tries = @tries
begin
yield
rescue => e
retries = ((tries -= 1) > 0)
unless @error_handler.nil?
@error_handler.call(e, retries)
end
if retries
retry
else
raise
end
end
end
|
#set_error_handler(&blk) ⇒ Object
101
102
103
|
# File 'lib/relish.rb', line 101
def set_error_handler(&blk)
@error_handler = blk
end
|
#update(id, version, data) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/relish.rb', line 80
def update(id, version, data)
rescue_dynamodb_error do
item = @db.get_version(id, version)
unless item.nil?
Release.new.tap do |release|
release.item = item
data.each do |k, v|
release.send("#{k}=", v.to_s) unless v.nil?
end
@db.put_version(id, version, release.item)
end
end
end
end
|