rpc-mapper 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rpc_mapper/adapters/restful_http_adapter.rb +2 -0
- data/lib/rpc_mapper/base.rb +1 -1
- data/lib/rpc_mapper/cacheable.rb +3 -2
- data/lib/rpc_mapper/errors.rb +3 -4
- data/lib/rpc_mapper/persistence.rb +9 -1
- data/lib/rpc_mapper/relation/finder_methods.rb +1 -1
- data/lib/rpc_mapper/relation/query_methods.rb +6 -1
- data/lib/rpc_mapper/relation.rb +1 -1
- data/lib/rpc_mapper/version.rb +1 -1
- metadata +3 -3
@@ -5,6 +5,8 @@ module RPCMapper::Adapters
|
|
5
5
|
class RestfulHTTPAdapter < RPCMapper::Adapters::AbstractAdapter
|
6
6
|
register_as :restful_http
|
7
7
|
|
8
|
+
attr_reader :last_response
|
9
|
+
|
8
10
|
def write(object)
|
9
11
|
params = build_params_from_attributes(object)
|
10
12
|
object.new_record? ? post_http(object, params) : put_http(object, params)
|
data/lib/rpc_mapper/base.rb
CHANGED
@@ -54,7 +54,7 @@ class RPCMapper::Base
|
|
54
54
|
public
|
55
55
|
|
56
56
|
delegate :find, :first, :all, :search, :apply_finder_options, :to => :scoped
|
57
|
-
delegate :select, :group, :order, :joins, :where, :having, :limit, :offset, :from, :to => :scoped
|
57
|
+
delegate :select, :group, :order, :joins, :where, :having, :limit, :offset, :from, :fresh, :to => :scoped
|
58
58
|
|
59
59
|
def new_from_data_store(hash)
|
60
60
|
if hash.nil?
|
data/lib/rpc_mapper/cacheable.rb
CHANGED
@@ -14,9 +14,10 @@ module RPCMapper::Cacheable
|
|
14
14
|
def fetch_records_with_caching(options={})
|
15
15
|
key = Digest::MD5.hexdigest(self.to_s + options.to_a.sort { |a,b| a.to_s.first <=> b.to_s.first }.inspect)
|
16
16
|
cache_hit = self.cacheable.read(key)
|
17
|
+
get_fresh = options.delete(:fresh)
|
17
18
|
|
18
|
-
if cache_hit
|
19
|
-
self.read_adapter.log(options, "CACHE")
|
19
|
+
if cache_hit && !get_fresh
|
20
|
+
self.read_adapter.log(options, "CACHE #{self.class.name}")
|
20
21
|
cache_hit.each { |fv| fv.fresh = false.freeze }
|
21
22
|
cache_hit
|
22
23
|
else
|
data/lib/rpc_mapper/errors.rb
CHANGED
@@ -8,9 +8,8 @@ module RPCMapper
|
|
8
8
|
class RecordNotFound < RPCMapperError
|
9
9
|
end
|
10
10
|
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
# end
|
11
|
+
# Raised when RPCMapper cannot save a record through the write_adapter and save! or update_attributes! was used
|
12
|
+
class RecordNotSaved < RPCMapperError
|
13
|
+
end
|
15
14
|
|
16
15
|
end
|
@@ -27,13 +27,21 @@ module RPCMapper::Persistence
|
|
27
27
|
write_adapter.write(self)
|
28
28
|
end
|
29
29
|
|
30
|
+
def save!
|
31
|
+
save or raise RPCMapper::RecordNotSaved
|
32
|
+
end
|
33
|
+
|
30
34
|
def update_attributes(attributes)
|
31
35
|
self.attributes = attributes
|
32
36
|
save
|
33
37
|
end
|
34
38
|
|
39
|
+
def update_attributes!(attributes)
|
40
|
+
update_attributes(attributes) or raise RPCMapper::RecordNotSaved
|
41
|
+
end
|
42
|
+
|
35
43
|
def destroy
|
36
|
-
write_adapter.delete(self)
|
44
|
+
write_adapter.delete(self) unless self.new_record?
|
37
45
|
end
|
38
46
|
alias :delete :destroy
|
39
47
|
|
@@ -37,7 +37,7 @@ module RPCMapper::FinderMethods
|
|
37
37
|
relation = clone
|
38
38
|
return relation unless options
|
39
39
|
|
40
|
-
[:joins, :limit, :offset, :order, :select, :group, :having, :from].each do |finder|
|
40
|
+
[:joins, :limit, :offset, :order, :select, :group, :having, :from, :fresh].each do |finder|
|
41
41
|
relation = relation.send(finder, options[finder]) if options[finder]
|
42
42
|
end
|
43
43
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module RPCMapper::QueryMethods
|
2
2
|
# TRP: Define each of the variables the query options will be stored in.
|
3
3
|
attr_accessor :select_values, :group_values, :order_values, :joins_values, :where_values,
|
4
|
-
:having_values, :limit_value, :offset_value, :from_value, :raw_sql_value
|
4
|
+
:having_values, :limit_value, :offset_value, :from_value, :raw_sql_value,
|
5
|
+
:fresh_value
|
5
6
|
|
6
7
|
def select(*args)
|
7
8
|
if block_given?
|
@@ -43,6 +44,10 @@ module RPCMapper::QueryMethods
|
|
43
44
|
clone.tap { |r| r.from_value = table }
|
44
45
|
end
|
45
46
|
|
47
|
+
def fresh(val=true)
|
48
|
+
clone.tap { |r| r.fresh_value = val }
|
49
|
+
end
|
50
|
+
|
46
51
|
def sql(raw_sql)
|
47
52
|
clone.tap { |r| r.raw_sql_value = raw_sql }
|
48
53
|
end
|
data/lib/rpc_mapper/relation.rb
CHANGED
@@ -5,7 +5,7 @@ require 'rpc_mapper/relation/finder_methods'
|
|
5
5
|
# => http://github.com/rails/rails
|
6
6
|
# Used to achieve the chainability of scopes -- methods are delegated back and forth from BM::Base and BM::Relation
|
7
7
|
class RPCMapper::Relation
|
8
|
-
SINGLE_VALUE_METHODS = [:limit, :offset, :from]
|
8
|
+
SINGLE_VALUE_METHODS = [:limit, :offset, :from, :fresh]
|
9
9
|
MULTI_VALUE_METHODS = [:select, :group, :order, :joins, :where, :having]
|
10
10
|
|
11
11
|
FINDER_OPTIONS = SINGLE_VALUE_METHODS + MULTI_VALUE_METHODS + [:conditions, :search, :sql]
|
data/lib/rpc_mapper/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpc-mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Travis Petticrew
|