relishable 0.5 → 0.6

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.
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: