Module: Graphiti::ActiveGraph::ResourceProxy
- Includes:
- SideloadResolve
- Defined in:
- lib/graphiti/active_graph/resource_proxy.rb
Constant Summary
SideloadResolve::PRELOAD_METHOD_PREFIX
Instance Attribute Summary collapse
Instance Method Summary
collapse
#resolve, #resolve_sideloads
Instance Attribute Details
#cache_tag ⇒ Object
Returns the value of attribute cache_tag.
5
6
7
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 5
def cache_tag
@cache_tag
end
|
#preloaded ⇒ Object
Returns the value of attribute preloaded.
5
6
7
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 5
def preloaded
@preloaded
end
|
Instance Method Details
#data ⇒ Object
Also known as:
resolve_data
31
32
33
34
35
36
37
38
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 31
def data
return @data if @data
return super unless @preloaded
resolve_sideloads(@preloaded)
@single ? data_for_preloaded_record : data_for_preloaded_records
end
|
#data_for_preloaded_record ⇒ Object
42
43
44
45
46
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 42
def data_for_preloaded_record
@preloaded = @preloaded.is_a?(Array) ? @preloaded[0] : @preloaded
@resource.decorate_record(@preloaded)
@data = @preloaded
end
|
#data_for_preloaded_records ⇒ Object
48
49
50
51
52
53
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 48
def data_for_preloaded_records
@preloaded.each do |r|
@resource.decorate_record(r)
end
@data = @preloaded
end
|
#initialize(resource, scope, query, payload: nil, single: false, raise_on_missing: false, cache: nil, cache_expires_in: nil, cache_tag: nil, preloaded: false) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 7
def initialize(
resource,
scope,
query,
payload: nil,
single: false,
raise_on_missing: false,
cache: nil,
cache_expires_in: nil,
cache_tag: nil,
preloaded: false
)
@resource = resource
@scope = scope
@query = query
@payload = payload
@single = single
@raise_on_missing = raise_on_missing
@cache = cache
@cache_expires_in = cache_expires_in
@cache_tag = cache_tag
@preloaded = preloaded
end
|
#save(action: :create) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 67
def save(action: :create)
original = Graphiti.context[:namespace]
begin
Graphiti.context[:namespace] = action
::Graphiti::RequestValidator.new(@resource, @payload.params, action).validate!
validator = persist {
@resource.persist_with_relationships \
@payload.meta(action: action),
@payload.attributes,
@payload.relationships
}
ensure
Graphiti.context[:namespace] = original
end
@data, success = validator.to_a
if success && !resource.relation_resource?
Graphiti.with_context(Graphiti.context[:object], :show) do
@scope.resolve_sideloads([@data])
end
end
success
end
|
#stats ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/graphiti/active_graph/resource_proxy.rb', line 55
def stats
@stats ||= if @query.stats && !resource.relation_resource?
payload = ::Graphiti::Stats::Payload.new @resource,
@query,
@scope.unpaginated_object,
data
payload.generate
else
{}
end
end
|