dymos 0.0.3 → 0.0.4

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: 7c0c0a46aa4fd1522baccf359d95557969ef7b84
4
- data.tar.gz: ce4dddfca46a0a4531633111ff41221821307972
3
+ metadata.gz: 0f19efc160366df30ebdf4cf8bddf10b96d7bc52
4
+ data.tar.gz: fe07218445f99d87f4e43eba77e01fa75d8a18e0
5
5
  SHA512:
6
- metadata.gz: 51158e3ba9bbe24135f76217f825fa11282bfce214f993ed2a92a1b01de54ed0d554137add7b387658dfd287e2dba741dde117a3528fb59012756d17adef4807
7
- data.tar.gz: 4c654ea7370834f50eff5f83e7562ec77ba68d595a8fa0d26b6cd30898d5c674974f5ff863a45351a58e9d47504dfefef98f8f84709c0dbd7d687fe9aaa33e59
6
+ metadata.gz: 587a325be4f0e04bea0987a232cf3e8a82763db102c02cb3fc54e434284533e45967237af8f18360ac3b2ab21da005df4675190d830f06bec05bdc166a833fa2
7
+ data.tar.gz: 2435827548726a4c26a45e3743dc214e193f0a61746260ea8ec88284b1abdec30be0573a07188117d3d303b81a6beb9bc576bc93e84e25ab375c008fd7e6d0e9
data/lib/dymos.rb CHANGED
@@ -4,6 +4,8 @@ require "dymos/query/builder"
4
4
  require "dymos/query/put_item"
5
5
  require "dymos/query/update_item"
6
6
  require "dymos/query/get_item"
7
+ require "dymos/query/describe"
8
+ require "dymos/query/scan"
7
9
  require "dymos/query/query"
8
10
  require "dymos/attribute"
9
11
  require "dymos/command"
data/lib/dymos/command.rb CHANGED
@@ -21,12 +21,12 @@ module Dymos
21
21
  Dymos::Query::Query.new(:query, table_name, class_name)
22
22
  end
23
23
 
24
- def scan
25
-
26
- end
27
-
28
24
  def describe
25
+ Dymos::Query::Describe.new(:describe_table, table_name, class_name)
26
+ end
29
27
 
28
+ def scan
29
+ Dymos::Query::Scan.new(:scan, table_name, class_name)
30
30
  end
31
31
  end
32
32
  end
data/lib/dymos/model.rb CHANGED
@@ -40,31 +40,15 @@ module Dymos
40
40
  end
41
41
 
42
42
  def self.all
43
- klass = new
44
- result = klass.dynamo.scan({table_name: klass.table_name})
45
- result.data[:items].map! { |data|
46
- model = Object.const_get(klass.class_name).new
47
- model.attributes=data
48
- model
49
- }
43
+ self.scan.execute
50
44
  end
51
45
 
52
- def self.find(key1, key2=nil, consistent_read: true)
53
- klass = new
54
- indexes = klass.global_indexes
46
+ def self.find(key1, key2=nil)
47
+ indexes = new.global_indexes
55
48
  keys={}
56
- keys[indexes.first[:attribute_name]] = key1
57
- keys[indexes.last[:attribute_name]] = key2 if indexes.size > 1
58
-
59
- res = klass.dynamo.get_item(
60
- table_name: klass.table_name,
61
- key: keys,
62
- # attributes_to_get: klass.attributes.keys,
63
- consistent_read: consistent_read,
64
- return_consumed_capacity: 'TOTAL'
65
- )
66
- klass.attributes = res.data.item
67
- klass
49
+ keys[indexes.first[:attribute_name].to_sym] = key1
50
+ keys[indexes.last[:attribute_name].to_sym] = key2 if indexes.size > 1
51
+ self.get.key(keys).execute
68
52
  end
69
53
 
70
54
  def save
@@ -14,9 +14,20 @@ module Dymos
14
14
 
15
15
  end
16
16
 
17
- def execute(client)
17
+ def before_send_query(command, query)
18
+
19
+ end
20
+
21
+ def after_send_query(command, query)
22
+
23
+ end
24
+
25
+ def execute(client = nil)
26
+ client ||= Aws::DynamoDB::Client.new
18
27
  begin
28
+ before_send_query command, query
19
29
  res = client.send command, query
30
+ after_send_query command, query
20
31
  rescue Aws::DynamoDB::Errors::ConditionalCheckFailedException
21
32
  return false
22
33
  end
@@ -32,6 +43,14 @@ module Dymos
32
43
  obj = Object.const_get(@class_name).new
33
44
  obj.attributes = res.attributes
34
45
  obj
46
+ elsif res.respond_to? :data
47
+ if res.data.respond_to? :item
48
+ obj = Object.const_get(@class_name).new
49
+ obj.attributes = res.data.item
50
+ obj
51
+ else
52
+ res.data.to_hash
53
+ end
35
54
  end
36
55
  else
37
56
  res.data
@@ -0,0 +1,11 @@
1
+ module Dymos
2
+ module Query
3
+ class Describe < ::Dymos::Query::Builder
4
+ def query
5
+ {
6
+ table_name: @table_name.to_s
7
+ }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module Dymos
2
+ module Query
3
+ class Scan < ::Dymos::Query::Builder
4
+
5
+ def limit(params)
6
+ @limit = params
7
+ self
8
+ end
9
+
10
+ def query
11
+ data = {
12
+ table_name: @table_name.to_s,
13
+ }
14
+ data[:limit] = @limit if @limit.present?
15
+ data
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/dymos/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dymos
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -154,7 +154,7 @@ describe Dymos::Model do
154
154
 
155
155
  describe :find do
156
156
  it "ユーザを抽出" do
157
- user = DummyUser.find('hoge')
157
+ user = DummyUser.get.key(id:'hoge').execute
158
158
  expect(user.id).to eq('hoge')
159
159
  expect(user.name).to eq('太郎')
160
160
  end
@@ -0,0 +1,46 @@
1
+ describe Dymos::Query::Describe do
2
+ before :all do
3
+ Aws.config[:region] = 'us-west-1'
4
+ Aws.config[:endpoint] = 'http://localhost:4567'
5
+ Aws.config[:access_key_id] = 'XXX'
6
+ Aws.config[:secret_access_key] = 'XXX'
7
+
8
+ client = Aws::DynamoDB::Client.new
9
+ client.delete_table(table_name: 'test_get_item') if client.list_tables[:table_names].include?('test_get_item')
10
+ client.create_table(
11
+ table_name: 'test_get_item',
12
+ attribute_definitions: [
13
+ {attribute_name: 'id', attribute_type: 'S'},
14
+ {attribute_name: 'category_id', attribute_type: 'N'},
15
+ ],
16
+ key_schema: [
17
+ {attribute_name: 'id', key_type: 'HASH'},
18
+ {attribute_name: 'category_id', key_type: 'RANGE'}
19
+ ],
20
+ provisioned_throughput: {
21
+ read_capacity_units: 1,
22
+ write_capacity_units: 1,
23
+ })
24
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 0, name: '太郎'})
25
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 1})
26
+
27
+ class TestItem < Dymos::Model
28
+ table :test_get_item
29
+ field :id, :string
30
+ end
31
+ end
32
+
33
+ let(:client) { Aws::DynamoDB::Client.new }
34
+ describe :describe do
35
+
36
+ it :query do
37
+ expect(TestItem.describe.query).to eq(table_name: "test_get_item")
38
+ end
39
+
40
+ it :execute do
41
+ expect(TestItem.describe.execute[:table][:attribute_definitions]).to eq([{:attribute_name => "id", :attribute_type => "S"}, {:attribute_name => "category_id", :attribute_type => "N"}])
42
+ end
43
+
44
+ end
45
+ end
46
+
@@ -41,8 +41,8 @@ describe Dymos::Query::GetItem do
41
41
  consistent_read: true,
42
42
  })
43
43
  # p client.scan(table_name: "test_get_item")
44
- # res = query.execute client
45
- # p res
44
+ res = query.execute client
45
+ expect(res.id).to eq('hoge')
46
46
 
47
47
 
48
48
  # expect(res).to eq({})
@@ -0,0 +1,49 @@
1
+ describe Dymos::Query::Scan do
2
+ before :all do
3
+ Aws.config[:region] = 'us-west-1'
4
+ Aws.config[:endpoint] = 'http://localhost:4567'
5
+ Aws.config[:access_key_id] = 'XXX'
6
+ Aws.config[:secret_access_key] = 'XXX'
7
+
8
+ client = Aws::DynamoDB::Client.new
9
+ client.delete_table(table_name: 'test_get_item') if client.list_tables[:table_names].include?('test_get_item')
10
+ client.create_table(
11
+ table_name: 'test_get_item',
12
+ attribute_definitions: [
13
+ {attribute_name: 'id', attribute_type: 'S'},
14
+ {attribute_name: 'category_id', attribute_type: 'N'},
15
+ ],
16
+ key_schema: [
17
+ {attribute_name: 'id', key_type: 'HASH'},
18
+ {attribute_name: 'category_id', key_type: 'RANGE'}
19
+ ],
20
+ provisioned_throughput: {
21
+ read_capacity_units: 1,
22
+ write_capacity_units: 1,
23
+ })
24
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 0, name: '太郎'})
25
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 1})
26
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 2})
27
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 3})
28
+ client.put_item(table_name: 'test_get_item', item: {id: 'hoge', category_id: 4})
29
+
30
+ class TestItem < Dymos::Model
31
+ table :test_get_item
32
+ field :id, :string
33
+ end
34
+ end
35
+
36
+ let(:client) { Aws::DynamoDB::Client.new }
37
+ describe :scan do
38
+
39
+ it :query do
40
+ expect(TestItem.scan.limit(100).query).to eq(table_name: "test_get_item", limit: 100)
41
+ end
42
+
43
+ it :execute do
44
+ expect(TestItem.scan.execute.size).to eq(5)
45
+ end
46
+
47
+ end
48
+ end
49
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dymos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - hoshina85
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-05 00:00:00.000000000 Z
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -129,19 +129,23 @@ files:
129
129
  - lib/dymos/model.rb
130
130
  - lib/dymos/query/attribute.rb
131
131
  - lib/dymos/query/builder.rb
132
+ - lib/dymos/query/describe.rb
132
133
  - lib/dymos/query/expect.rb
133
134
  - lib/dymos/query/get_item.rb
134
135
  - lib/dymos/query/put_item.rb
135
136
  - lib/dymos/query/query.rb
137
+ - lib/dymos/query/scan.rb
136
138
  - lib/dymos/query/update_item.rb
137
139
  - lib/dymos/version.rb
138
140
  - spec/lib/dymos/model_spec.rb
139
141
  - spec/lib/dymos/query/attribute_spec.rb
140
142
  - spec/lib/dymos/query/builder_spec.rb
143
+ - spec/lib/dymos/query/describe_spec.rb
141
144
  - spec/lib/dymos/query/expect_spec.rb
142
145
  - spec/lib/dymos/query/get_item_spec.rb
143
146
  - spec/lib/dymos/query/put_item_spec.rb
144
147
  - spec/lib/dymos/query/query_spec.rb
148
+ - spec/lib/dymos/query/scan_spec.rb
145
149
  - spec/lib/dymos/query/update_item_spec.rb
146
150
  - spec/spec_helper.rb
147
151
  homepage: ''
@@ -172,9 +176,11 @@ test_files:
172
176
  - spec/lib/dymos/model_spec.rb
173
177
  - spec/lib/dymos/query/attribute_spec.rb
174
178
  - spec/lib/dymos/query/builder_spec.rb
179
+ - spec/lib/dymos/query/describe_spec.rb
175
180
  - spec/lib/dymos/query/expect_spec.rb
176
181
  - spec/lib/dymos/query/get_item_spec.rb
177
182
  - spec/lib/dymos/query/put_item_spec.rb
178
183
  - spec/lib/dymos/query/query_spec.rb
184
+ - spec/lib/dymos/query/scan_spec.rb
179
185
  - spec/lib/dymos/query/update_item_spec.rb
180
186
  - spec/spec_helper.rb