appfuel 0.5.9 → 0.5.10
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26008749776ba357f8a284a4feee76e7370c18c7
|
4
|
+
data.tar.gz: 0c2c61390c5e6e8a36a4b4101bd51ea49e97953f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47a10118db23f624497b4035fe3267239d3ebbde0da51fd98769033ce02656afe2859344c2037d57147047d7241e3193695a5ff30514a734bf39c2128da7129b
|
7
|
+
data.tar.gz: 5df321fb1f883bf3f7a6ed91d29517a515986933c9d8f5928d5dd81f4247c7e1b652951c6977b7c86e5403bb0109d34c288e1e2f4a53df7395e06e8104a6afde
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,12 @@ All notable changes to this project will be documented in this file. (Pending ap
|
|
5
5
|
|
6
6
|
|
7
7
|
# Releases
|
8
|
-
## [[0.5.
|
8
|
+
## [[0.5.10]](https://github.com/rsb/appfuel/releases/tag/0.5.10) 2017-07-28
|
9
|
+
### Added
|
10
|
+
- Primary key object for dynamodb
|
11
|
+
- new adapter interfaces for get, put, and delete
|
12
|
+
|
13
|
+
## [[0.5.9]](https://github.com/rsb/appfuel/releases/tag/0.5.9) 2017-07-27
|
9
14
|
### Added
|
10
15
|
- Adding a `run!` to handler which deals with failures
|
11
16
|
- Adding a HandlerFailure has for when the handler fails
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Appfuel
|
2
2
|
module Dynamodb
|
3
|
-
|
3
|
+
DEFAULT_CONFIG_KEY = 'aws.dynamodb'
|
4
|
+
CLIENT_CONTAINER_KEY = "#{DEFAULT_CONFIG_KEY}.client"
|
4
5
|
|
5
6
|
class NoSqlModel
|
6
7
|
include Appfuel::Application::AppContainer
|
@@ -11,7 +12,9 @@ module Appfuel
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def config_key(value = nil)
|
14
|
-
|
15
|
+
if value.nil?
|
16
|
+
return @config_key ||= DEFAULT_CONFIG_KEY
|
17
|
+
end
|
15
18
|
@config_key = value.to_s
|
16
19
|
end
|
17
20
|
|
@@ -61,12 +64,8 @@ module Appfuel
|
|
61
64
|
stage_class_for_registration(klass)
|
62
65
|
end
|
63
66
|
|
64
|
-
def primary_key(
|
65
|
-
@primary_key =
|
66
|
-
unless range_key.nil?
|
67
|
-
fail "range type is required" if range_type.nil?
|
68
|
-
@primary_key << { range_key => range_type }
|
69
|
-
end
|
67
|
+
def primary_key(hash, hash_type, range = nil, range_type = nil)
|
68
|
+
@primary_key = PrimaryKey.new(hash, hash_type, range, range_type)
|
70
69
|
end
|
71
70
|
end
|
72
71
|
|
@@ -91,18 +90,19 @@ module Appfuel
|
|
91
90
|
self.class.indexes[key]
|
92
91
|
end
|
93
92
|
|
93
|
+
def primary_key
|
94
|
+
fail "No primary key assigned" if self.class.primary_key.nil?
|
95
|
+
self.class.primary_key
|
96
|
+
end
|
97
|
+
|
98
|
+
|
94
99
|
def put_params(data)
|
95
|
-
|
96
|
-
table_name: table_name,
|
97
|
-
item: data
|
98
|
-
}
|
100
|
+
create_table_hash(item: data)
|
99
101
|
end
|
100
102
|
|
101
|
-
def table_params(
|
102
|
-
|
103
|
-
|
104
|
-
key: keys
|
105
|
-
}
|
103
|
+
def table_params(hash_key_value, range_key_value = nil)
|
104
|
+
params = primary_key.params(hash_key_value, range_key_value)
|
105
|
+
create_table_hash(key: params)
|
106
106
|
end
|
107
107
|
|
108
108
|
def query_select_map(type)
|
@@ -115,13 +115,12 @@ module Appfuel
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def select_index_params(key, attrs_returned, key_expr, values = {})
|
118
|
-
|
119
|
-
table_name: table_name,
|
118
|
+
create_table_hash(
|
120
119
|
index_name: index_name(key),
|
121
|
-
select:
|
120
|
+
select: query_select_map(attrs_returned),
|
122
121
|
key_condition_expression: key_expr,
|
123
122
|
expression_attribute_values: values
|
124
|
-
|
123
|
+
)
|
125
124
|
end
|
126
125
|
|
127
126
|
def select_index(key, select, key_expr, values = {})
|
@@ -129,11 +128,36 @@ module Appfuel
|
|
129
128
|
client.query(params)
|
130
129
|
end
|
131
130
|
|
132
|
-
def
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
def put(data)
|
132
|
+
params = put_params(data)
|
133
|
+
ap params
|
134
|
+
client.put_item(params)
|
135
|
+
end
|
136
|
+
|
137
|
+
def get(hash_value, range_value = nil)
|
138
|
+
result = get_item(hash_value, range_value)
|
139
|
+
return false if result.item.nil?
|
140
|
+
|
141
|
+
result.item
|
142
|
+
end
|
143
|
+
|
144
|
+
def get_item(hash_value, range_value = nil)
|
145
|
+
params = table_params(hash_value, range_value)
|
146
|
+
client.get_item(params)
|
147
|
+
end
|
148
|
+
|
149
|
+
def delete(hash_value, range_value = nil)
|
150
|
+
delete_item(hash_value, range_value)
|
151
|
+
end
|
152
|
+
|
153
|
+
def delete_item(hash_value, range_value = nil)
|
154
|
+
params = table_params(hash_value, range_value)
|
155
|
+
client.delete_item(params)
|
156
|
+
end
|
136
157
|
|
158
|
+
private
|
159
|
+
def create_table_hash(data = {})
|
160
|
+
data.merge!(table_name: table_name)
|
137
161
|
end
|
138
162
|
end
|
139
163
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Appfuel
|
2
|
+
module Dynamodb
|
3
|
+
class PrimaryKey
|
4
|
+
attr_reader :hash_key, :range_key
|
5
|
+
|
6
|
+
def initialize(hash_key, hash_type, range_key = nil, range_type = nil)
|
7
|
+
@hash_key = hash_key.to_sym
|
8
|
+
@hash_type = hash_type
|
9
|
+
unless range_key.nil?
|
10
|
+
if range_type.nil?
|
11
|
+
fail "range_type is required for primary range key"
|
12
|
+
end
|
13
|
+
@range_key = range_key
|
14
|
+
@range_type = range_type
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def composite?
|
19
|
+
!range_key.nil?
|
20
|
+
end
|
21
|
+
|
22
|
+
def params(hash_value, range_value = nil)
|
23
|
+
data = { hash_key => hash_value }
|
24
|
+
if composite?
|
25
|
+
if range_value.nil?
|
26
|
+
fail "This is a composite key range_value is required"
|
27
|
+
end
|
28
|
+
data[range_key] = range_value
|
29
|
+
end
|
30
|
+
data
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
1
3
|
module Appfuel
|
2
4
|
module Repository
|
3
5
|
# The generic repository behavior. This represents repo behavior that is
|
@@ -237,6 +239,10 @@ module Appfuel
|
|
237
239
|
app_container[key].new(hash)
|
238
240
|
end
|
239
241
|
|
242
|
+
def generate_uuid
|
243
|
+
SecureRandom.uuid
|
244
|
+
end
|
245
|
+
|
240
246
|
private
|
241
247
|
def method_not_implemented_error
|
242
248
|
fail "must be implemented by a storage specific repository"
|
data/lib/appfuel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appfuel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Scott-Buccleuch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -342,6 +342,7 @@ files:
|
|
342
342
|
- lib/appfuel/storage/db/repository_query.rb
|
343
343
|
- lib/appfuel/storage/dynamodb.rb
|
344
344
|
- lib/appfuel/storage/dynamodb/adapter.rb
|
345
|
+
- lib/appfuel/storage/dynamodb/primary_key.rb
|
345
346
|
- lib/appfuel/storage/dynamodb/repository.rb
|
346
347
|
- lib/appfuel/storage/file.rb
|
347
348
|
- lib/appfuel/storage/file/base.rb
|