aws-record 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d74cea18f658e37fa6d0859826cbf76cb013a17
|
4
|
+
data.tar.gz: 8c624c68f54659a10c48231a70be86608254fe49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b420c83918fc9306243df3e2b2f3cbb2226893763317bd84f97851c1cd9f7e34d1136929546417f627328ad275f4eb50e8621aa428ca49aa760e2d5e9a005b84
|
7
|
+
data.tar.gz: 1139b5b759c65e1b6387046ba0ad139cb695e438f1e8dc5cab7d343a74a0473f3e24da5b173cb9e5bfa227f3648401e276462a616a70a30bb4ff7830c91f572a
|
data/lib/aws-record.rb
CHANGED
@@ -33,6 +33,7 @@ require_relative 'aws-record/record/marshalers/integer_marshaler'
|
|
33
33
|
require_relative 'aws-record/record/marshalers/float_marshaler'
|
34
34
|
require_relative 'aws-record/record/marshalers/date_marshaler'
|
35
35
|
require_relative 'aws-record/record/marshalers/date_time_marshaler'
|
36
|
+
require_relative 'aws-record/record/marshalers/time_marshaler'
|
36
37
|
require_relative 'aws-record/record/marshalers/list_marshaler'
|
37
38
|
require_relative 'aws-record/record/marshalers/map_marshaler'
|
38
39
|
require_relative 'aws-record/record/marshalers/string_set_marshaler'
|
@@ -219,6 +219,27 @@ module Aws
|
|
219
219
|
attr(name, Marshalers::DateTimeMarshaler.new(opts), opts)
|
220
220
|
end
|
221
221
|
|
222
|
+
# Define a time-type attribute for your model.
|
223
|
+
#
|
224
|
+
# @param [Symbol] name Name of this attribute. It should be a name that
|
225
|
+
# is safe to use as a method.
|
226
|
+
# @param [Hash] opts
|
227
|
+
# @option opts [Boolean] :hash_key Set to true if this attribute is
|
228
|
+
# the hash key for the table.
|
229
|
+
# @option opts [Boolean] :range_key Set to true if this attribute is
|
230
|
+
# the range key for the table.
|
231
|
+
# @option opts [Boolean] :persist_nil Optional attribute used to
|
232
|
+
# indicate whether nil values should be persisted. If true, explicitly
|
233
|
+
# set nil values will be saved to DynamoDB as a "null" type. If false,
|
234
|
+
# nil values will be ignored and not persisted. By default, is false.
|
235
|
+
# @option opts [Object] :default_value Optional attribute used to
|
236
|
+
# define a "default value" to be used if the attribute's value on an
|
237
|
+
# item is nil or not set at persistence time.
|
238
|
+
def time_attr(name, opts = {})
|
239
|
+
opts[:dynamodb_type] = "S"
|
240
|
+
attr(name, Marshalers::TimeMarshaler.new(opts), opts)
|
241
|
+
end
|
242
|
+
|
222
243
|
# Define a list-type attribute for your model.
|
223
244
|
#
|
224
245
|
# Lists do not have to be homogeneous, but they do have to be types that
|
@@ -339,12 +360,12 @@ module Aws
|
|
339
360
|
attr(name, Marshalers::NumericSetMarshaler.new(opts), opts)
|
340
361
|
end
|
341
362
|
|
342
|
-
# @return [Symbol,nil]
|
363
|
+
# @return [Symbol,nil] The symbolic name of the table's hash key.
|
343
364
|
def hash_key
|
344
365
|
@keys.hash_key
|
345
366
|
end
|
346
367
|
|
347
|
-
# @return [Symbol,nil]
|
368
|
+
# @return [Symbol,nil] The symbloc name of the table's range key, or nil if there is no range key.
|
348
369
|
def range_key
|
349
370
|
@keys.range_key
|
350
371
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You may not
|
4
|
+
# use this file except in compliance with the License. A copy of the License is
|
5
|
+
# located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is distributed on
|
10
|
+
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
11
|
+
# or implied. See the License for the specific language governing permissions
|
12
|
+
# and limitations under the License.
|
13
|
+
|
14
|
+
require 'time'
|
15
|
+
|
16
|
+
module Aws
|
17
|
+
module Record
|
18
|
+
module Marshalers
|
19
|
+
|
20
|
+
class TimeMarshaler
|
21
|
+
def initialize(opts = {})
|
22
|
+
@formatter = opts[:formatter] || Iso8601Formatter
|
23
|
+
@use_local_time = opts[:use_local_time] ? true : false
|
24
|
+
end
|
25
|
+
|
26
|
+
def type_cast(raw_value)
|
27
|
+
value = _format(raw_value)
|
28
|
+
if !@use_local_time && value.is_a?(::Time)
|
29
|
+
value.utc
|
30
|
+
else
|
31
|
+
value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def serialize(raw_value)
|
36
|
+
time = type_cast(raw_value)
|
37
|
+
if time.nil?
|
38
|
+
nil
|
39
|
+
elsif time.is_a?(::Time)
|
40
|
+
@formatter.format(time)
|
41
|
+
else
|
42
|
+
msg = "expected a Time value or nil, got #{time.class}"
|
43
|
+
raise ArgumentError, msg
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def _format(raw_value)
|
50
|
+
case raw_value
|
51
|
+
when nil
|
52
|
+
nil
|
53
|
+
when ''
|
54
|
+
nil
|
55
|
+
when ::Time
|
56
|
+
raw_value
|
57
|
+
when Integer # timestamp
|
58
|
+
::Time.at(raw_value)
|
59
|
+
else # Date, DateTime, or String
|
60
|
+
::Time.parse(raw_value.to_s)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
module Iso8601Formatter
|
66
|
+
def self.format(time)
|
67
|
+
time.iso8601
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -31,7 +31,7 @@ module Aws
|
|
31
31
|
def initialize(model, opts = {})
|
32
32
|
_assert_model_valid(model)
|
33
33
|
@model = model
|
34
|
-
@client = opts[:client] || Aws::DynamoDB::Client.new
|
34
|
+
@client = opts[:client] || model.dynamodb_client || Aws::DynamoDB::Client.new
|
35
35
|
end
|
36
36
|
|
37
37
|
# This method calls
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- lib/aws-record/record/marshalers/numeric_set_marshaler.rb
|
52
52
|
- lib/aws-record/record/marshalers/string_marshaler.rb
|
53
53
|
- lib/aws-record/record/marshalers/string_set_marshaler.rb
|
54
|
+
- lib/aws-record/record/marshalers/time_marshaler.rb
|
54
55
|
- lib/aws-record/record/model_attributes.rb
|
55
56
|
- lib/aws-record/record/query.rb
|
56
57
|
- lib/aws-record/record/secondary_indexes.rb
|