relishable 0.35 → 0.36

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: 8bf410339f64a0e2526441a2717017414062e45d
4
- data.tar.gz: f7f11bf1ac673c8a73de78967a1152c86c358ab1
3
+ metadata.gz: 46c6330cb5ff0a4a0c359c97b0e94fbde91fc63d
4
+ data.tar.gz: e56e3e5febebdd0a9263c175dbc159d0b6194733
5
5
  SHA512:
6
- metadata.gz: 9a3dd84d20f1bed8e335ddf3999569dc005e7a8a05ba015d6b28f51326ee5431a7aa53589c753889e867f457a8feac0e620181bf508f7d97dff406916571f310
7
- data.tar.gz: c0e8e81b5bf9b9555c75640db400b5888e768cbbabaa4af24cae118b69cd1a9d180428a6f33a1266cdfec418235433389634e297a4743c8d13eeb5c40510fc19
6
+ metadata.gz: 06996c432afb22924a1e3f49735e622a10ed7cf6cb4c171a178797244ded17ea10a67012bf7d500c4e341b4c5be8b1fdbf9dfabb3f0c2b2a998b29b34b8c0b7d
7
+ data.tar.gz: e57e0635478e91f0fe506e1934e2e234b5d663312f277b53fb3775cf96a39e925cbfe8eb12012059e6bc028604a2ca3a6837ff38ce734b5f81b9e0331b2d4a55
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- relishable (0.35)
5
- fog (~> 1.23.0)
4
+ relishable (0.36)
5
+ fog-aws (~> 0.8.0)
6
6
  legacy-fernet (~> 1.6.3)
7
+ net-ssh (~> 3.0.2)
7
8
 
8
9
  GEM
9
10
  remote: http://rubygems.org/
@@ -14,38 +15,30 @@ GEM
14
15
  safe_yaml (~> 1.0.0)
15
16
  diff-lcs (1.2.5)
16
17
  excon (0.45.4)
17
- fog (1.23.0)
18
- fog-brightbox
19
- fog-core (~> 1.23)
20
- fog-json
21
- fog-softlayer
22
- ipaddress (~> 0.5)
23
- nokogiri (~> 1.5, >= 1.5.11)
24
- fog-brightbox (0.9.0)
25
- fog-core (~> 1.22)
26
- fog-json
27
- inflecto (~> 0.0.2)
28
- fog-core (1.33.0)
18
+ fog-aws (0.8.0)
19
+ fog-core (~> 1.27)
20
+ fog-json (~> 1.0)
21
+ fog-xml (~> 0.1)
22
+ ipaddress (~> 0.8)
23
+ fog-core (1.35.0)
29
24
  builder
30
25
  excon (~> 0.45)
31
26
  formatador (~> 0.2)
32
- mime-types
33
27
  fog-json (1.0.2)
34
28
  fog-core (~> 1.0)
35
29
  multi_json (~> 1.10)
36
- fog-softlayer (1.0.2)
30
+ fog-xml (0.1.2)
37
31
  fog-core
38
- fog-json
32
+ nokogiri (~> 1.5, >= 1.5.11)
39
33
  formatador (0.2.5)
40
- inflecto (0.0.2)
41
- ipaddress (0.8.0)
34
+ ipaddress (0.8.2)
42
35
  legacy-fernet (1.6.3)
43
36
  multi_json
44
- mime-types (2.6.2)
45
- mini_portile (0.6.2)
37
+ mini_portile2 (2.0.0)
46
38
  multi_json (1.11.2)
47
- nokogiri (1.6.6.2)
48
- mini_portile (~> 0.6.0)
39
+ net-ssh (3.0.2)
40
+ nokogiri (1.6.7.1)
41
+ mini_portile2 (~> 2.0.0.rc2)
49
42
  power_assert (0.2.2)
50
43
  rake (10.4.2)
51
44
  rspec (3.1.0)
data/lib/relish.rb CHANGED
@@ -26,7 +26,7 @@ class Relish
26
26
 
27
27
  def create(id, data)
28
28
  rescue_dynamodb_error do
29
- item = @db.query_current_version(id)
29
+ item = @db.query_latest_version(id)
30
30
  Release.new.tap do |release|
31
31
  if item.nil?
32
32
  release.item = {}
@@ -76,7 +76,7 @@ class Relish
76
76
  end
77
77
  end
78
78
  end
79
-
79
+
80
80
  def update(id, version, data)
81
81
  rescue_dynamodb_error do
82
82
  item = @db.get_version(id, version)
@@ -1,4 +1,4 @@
1
- require "fog"
1
+ require "fog/aws"
2
2
 
3
3
  class Relish
4
4
  class DynamoHelper
@@ -15,8 +15,34 @@ class Relish
15
15
  end
16
16
 
17
17
  def query_current_version(id, *attrs)
18
- response = db.query(@table_name, {:S => id}, :ConsistentRead => true, :Limit => 1, :ScanIndexForward => false)
19
- if response.body['Count'] == 1
18
+ response = db.query(@table_name,
19
+ :KeyConditionExpression => 'id = :id AND version > :version',
20
+ :FilterExpression => 'draft <> :isDraft',
21
+ :ExpressionAttributeValues => {
22
+ ':id' => {:S => id},
23
+ ':version' => {:N => '0'},
24
+ ':isDraft' => {:BOOL => true}
25
+ },
26
+ :ConsistentRead => true,
27
+ :ScanIndexForward => false)
28
+ count = response.body['Count'] || 0
29
+ if count > 0
30
+ response.body['Items'].first
31
+ end
32
+ end
33
+
34
+ def query_latest_version(id, *attrs)
35
+ response = db.query(@table_name,
36
+ :KeyConditionExpression => 'id = :id AND version > :version',
37
+ :ExpressionAttributeValues => {
38
+ ':id' => {:S => id},
39
+ ':version' => {:N => '0'},
40
+ },
41
+ :Limit => 1,
42
+ :ConsistentRead => true,
43
+ :ScanIndexForward => false)
44
+ count = response.body['Count'] || 0
45
+ if count > 0
20
46
  response.body['Items'].first
21
47
  end
22
48
  end
@@ -26,16 +52,21 @@ class Relish
26
52
  end
27
53
 
28
54
  def get_version(id, version, *attrs)
29
- response = db.get_item(@table_name, {:HashKeyElement => {:S => id}, :RangeKeyElement => {:N => version}}, :ConsistentRead => true)
55
+ response = db.get_item(@table_name, {:id => {:S => id}, :version => {:N => version}}, :ConsistentRead => true)
30
56
  response.body['Item']
31
57
  end
32
58
 
33
59
  def delete_version(id, version)
34
- db.delete_item(@table_name, {:HashKeyElement => {:S => id}, :RangeKeyElement => {:N => version}})
60
+ db.delete_item(@table_name, id: {:S => id}, :version => {:N => version})
35
61
  end
36
62
 
37
63
  def put_version(id, version, item)
38
- db.put_item(@table_name, item, {:Expected => {:id => {:Value => {:S => id}}, :version => {:Value => {:N => version}}}})
64
+ db.put_item(@table_name, item,
65
+ :ConditionExpression => 'id <> :id AND version <> :version',
66
+ :ExpressionAttributeValues => {
67
+ ':id' => {:S => id},
68
+ ':version' => {:N => version}
69
+ })
39
70
  end
40
71
 
41
72
  def put(item)
@@ -43,7 +74,15 @@ class Relish
43
74
  end
44
75
 
45
76
  def query(id, consistent, limit)
46
- response = db.query(@table_name, {:S => id}, :ConsistentRead => consistent, :Limit => limit, :ScanIndexForward => false)
77
+ response = db.query(@table_name,
78
+ :KeyConditionExpression => 'id = :id AND version > :version',
79
+ :ExpressionAttributeValues => {
80
+ ':id' => {:S => id},
81
+ ':version' => {:N => '0'}
82
+ },
83
+ :ConsistentRead => consistent,
84
+ :Limit => limit,
85
+ :ScanIndexForward => false)
47
86
  response.body['Items']
48
87
  end
49
88
 
@@ -14,6 +14,7 @@ class Relish
14
14
  :version => :N,
15
15
  :name => :S,
16
16
  :descr => :S,
17
+ :draft => :BOOL,
17
18
  :user_id => :N,
18
19
  :route_id => :S,
19
20
  :slug_uuid => :S,
@@ -1,4 +1,4 @@
1
- require "fog"
1
+ require "fog/aws"
2
2
 
3
3
  class Relish
4
4
  class S3Helper
@@ -1,5 +1,5 @@
1
1
  class Relish
2
- VERSION = "0.35"
2
+ VERSION = "0.36"
3
3
  end
4
4
 
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relishable
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.35'
4
+ version: '0.36'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Fine
@@ -11,22 +11,22 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-12-21 00:00:00.000000000 Z
14
+ date: 2016-01-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: fog
17
+ name: fog-aws
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.23.0
22
+ version: 0.8.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 1.23.0
29
+ version: 0.8.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: legacy-fernet
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -41,6 +41,20 @@ dependencies:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: 1.6.3
44
+ - !ruby/object:Gem::Dependency
45
+ name: net-ssh
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 3.0.2
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: 3.0.2
44
58
  - !ruby/object:Gem::Dependency
45
59
  name: rake
46
60
  requirement: !ruby/object:Gem::Requirement
@@ -139,3 +153,4 @@ signing_key:
139
153
  specification_version: 4
140
154
  summary: releases
141
155
  test_files: []
156
+ has_rdoc: