relishable 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/relish.rb +41 -27
  2. metadata +1 -1
data/lib/relish.rb CHANGED
@@ -2,7 +2,7 @@ require "fog"
2
2
 
3
3
  class Relish
4
4
 
5
- attr_accessor :items
5
+ attr_accessor :item
6
6
 
7
7
  def self.conf(*attrs)
8
8
  attrs.each do |attr|
@@ -15,8 +15,8 @@ class Relish
15
15
 
16
16
  def self.schema(attrs)
17
17
  attrs.each do |attr, type|
18
- class_eval "def #{attr}; @items['#{attr}']['#{type}'] if @items.key? '#{attr}' end", __FILE__, __LINE__
19
- class_eval "def #{attr}= value; @items['#{attr}'] = {'#{type}' => value} end", __FILE__, __LINE__
18
+ class_eval "def #{attr}; @item['#{attr}']['#{type}'] if @item.key? '#{attr}' end", __FILE__, __LINE__
19
+ class_eval "def #{attr}= value; @item['#{attr}'] = {'#{type}' => value} end", __FILE__, __LINE__
20
20
  end
21
21
  end
22
22
 
@@ -46,8 +46,8 @@ class Relish
46
46
  end
47
47
  end
48
48
 
49
- def self.db_put_current_version(items)
50
- response = db.put_item(table_name, items, {:Expected => {:id => {:Exists => false}, :version => {:Exists => false}}})
49
+ def self.db_put_current_version(item)
50
+ response = db.put_item(table_name, item, {:Expected => {:id => {:Exists => false}, :version => {:Exists => false}}})
51
51
  if response.status != 200
52
52
  raise('status: #{response.status}')
53
53
  end
@@ -61,80 +61,94 @@ class Relish
61
61
  response.body['Item']
62
62
  end
63
63
 
64
- def self.db_put_version(id, version, items)
65
- response = db.put_item(table_name, items, {:Expected => {:id => {:Value => {:S => id}}, :version => {:Value => {:N => version}}}})
64
+ def self.db_put_version(id, version, item)
65
+ response = db.put_item(table_name, item, {:Expected => {:id => {:Value => {:S => id}}, :version => {:Value => {:N => version}}}})
66
66
  if response.status != 200
67
67
  raise('status: #{response.status}')
68
68
  end
69
69
  end
70
70
 
71
- def self.db_put(items)
72
- response = db.put_item(table_name, items)
71
+ def self.db_put(item)
72
+ response = db.put_item(table_name, item)
73
73
  if response.status != 200
74
74
  raise('status: #{response.status}')
75
75
  end
76
76
  end
77
77
 
78
+ def self.db_query(id, limit)
79
+ response = db.query(table_name, {:S => id}, :ConsistentRead => true, :Limit => limit, :ScanIndexForward => false)
80
+ if response.status != 200
81
+ raise('status: #{response.status}')
82
+ end
83
+ response.body['Items']
84
+ end
85
+
78
86
  def self.copy(id, version, data)
79
87
  release = new
80
- release.items = {}
88
+ release.item = {}
81
89
  release.id = id
82
90
  release.version = version
83
91
  data.each do |k, v|
84
92
  release.send("#{k}=", v.to_s) unless v.nil?
85
93
  end
86
- db_put(release.items)
94
+ db_put(release.item)
87
95
  release
88
96
  end
89
97
 
90
98
  def self.create(id, data)
91
- items = db_query_current_version(id)
99
+ item = db_query_current_version(id)
92
100
  release = new
93
- if items.nil?
94
- release.items = {}
101
+ if item.nil?
102
+ release.item = {}
95
103
  release.id = id
96
104
  release.version = "1"
97
105
  else
98
- release.items = items
106
+ release.item = item
99
107
  release.version = (release.version.to_i + 1).to_s
100
108
  end
101
109
  data.each do |k, v|
102
110
  release.send("#{k}=", v.to_s) unless v.nil?
103
111
  end
104
- db_put_current_version(release.items)
112
+ db_put_current_version(release.item)
105
113
  release
106
114
  end
107
115
 
108
116
  def self.current(id)
109
- items = db_query_current_version(id)
110
- unless items.nil?
117
+ item = db_query_current_version(id)
118
+ unless item.nil?
111
119
  release = new
112
- release.items = items
120
+ release.item = item
113
121
  release
114
122
  end
115
123
  end
116
124
 
117
125
  def self.read(id, version)
118
- items = db_get_version(id, version)
119
- unless items.nil?
126
+ item = db_get_version(id, version)
127
+ unless item.nil?
120
128
  release = new
121
- release.items = items
129
+ release.item = item
122
130
  release
123
131
  end
124
132
  end
125
133
 
126
- def self.dump(id)
134
+ def self.dump(id, limit=nil)
135
+ items = db_query(id, limit)
136
+ items.map do |item|
137
+ release = new
138
+ release.item = item
139
+ release
140
+ end
127
141
  end
128
142
 
129
143
  def self.update(id, version, data)
130
- items = db_get_version(id, version)
131
- unless items.nil?
144
+ item = db_get_version(id, version)
145
+ unless item.nil?
132
146
  release = new
133
- release.items = items
147
+ release.item = item
134
148
  data.each do |k, v|
135
149
  release.send("#{k}=", v.to_s) unless v.nil?
136
150
  end
137
- db_put_version(id, version, release.items)
151
+ db_put_version(id, version, release.item)
138
152
  release
139
153
  end
140
154
  end
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.5'
4
+ version: '0.6'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: