jsonapi_compliable 0.6.4 → 0.6.5
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 +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +11 -3
- data/.yardopts +1 -0
- data/README.md +10 -1
- data/Rakefile +1 -0
- data/docs/JsonapiCompliable.html +202 -0
- data/docs/JsonapiCompliable/Adapters.html +119 -0
- data/docs/JsonapiCompliable/Adapters/Abstract.html +2285 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +2151 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +582 -0
- data/docs/JsonapiCompliable/Adapters/Null.html +1682 -0
- data/docs/JsonapiCompliable/Base.html +1395 -0
- data/docs/JsonapiCompliable/Deserializer.html +835 -0
- data/docs/JsonapiCompliable/Errors.html +115 -0
- data/docs/JsonapiCompliable/Errors/BadFilter.html +124 -0
- data/docs/JsonapiCompliable/Errors/StatNotFound.html +266 -0
- data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +264 -0
- data/docs/JsonapiCompliable/Errors/ValidationError.html +124 -0
- data/docs/JsonapiCompliable/Extensions.html +117 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +212 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +229 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +242 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +237 -0
- data/docs/JsonapiCompliable/Query.html +1099 -0
- data/docs/JsonapiCompliable/Rails.html +211 -0
- data/docs/JsonapiCompliable/Resource.html +5241 -0
- data/docs/JsonapiCompliable/Scope.html +703 -0
- data/docs/JsonapiCompliable/Scoping.html +117 -0
- data/docs/JsonapiCompliable/Scoping/Base.html +843 -0
- data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +318 -0
- data/docs/JsonapiCompliable/Scoping/ExtraFields.html +301 -0
- data/docs/JsonapiCompliable/Scoping/Filter.html +313 -0
- data/docs/JsonapiCompliable/Scoping/Filterable.html +364 -0
- data/docs/JsonapiCompliable/Scoping/Paginate.html +613 -0
- data/docs/JsonapiCompliable/Scoping/Sort.html +454 -0
- data/docs/JsonapiCompliable/SerializableTempId.html +216 -0
- data/docs/JsonapiCompliable/Sideload.html +2484 -0
- data/docs/JsonapiCompliable/Stats.html +117 -0
- data/docs/JsonapiCompliable/Stats/DSL.html +999 -0
- data/docs/JsonapiCompliable/Stats/Payload.html +391 -0
- data/docs/JsonapiCompliable/Util.html +117 -0
- data/docs/JsonapiCompliable/Util/FieldParams.html +228 -0
- data/docs/JsonapiCompliable/Util/Hash.html +471 -0
- data/docs/JsonapiCompliable/Util/IncludeParams.html +299 -0
- data/docs/JsonapiCompliable/Util/Persistence.html +435 -0
- data/docs/JsonapiCompliable/Util/RelationshipPayload.html +563 -0
- data/docs/JsonapiCompliable/Util/RenderOptions.html +250 -0
- data/docs/JsonapiCompliable/Util/ValidationResponse.html +532 -0
- data/docs/_index.html +527 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file.README.html +99 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +99 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1731 -0
- data/docs/top-level-namespace.html +110 -0
- data/gemfiles/rails_5.gemfile +1 -1
- data/lib/jsonapi_compliable/adapters/abstract.rb +267 -4
- data/lib/jsonapi_compliable/adapters/active_record.rb +23 -1
- data/lib/jsonapi_compliable/adapters/null.rb +43 -3
- data/lib/jsonapi_compliable/base.rb +182 -33
- data/lib/jsonapi_compliable/deserializer.rb +90 -21
- data/lib/jsonapi_compliable/extensions/boolean_attribute.rb +12 -0
- data/lib/jsonapi_compliable/extensions/extra_attribute.rb +32 -0
- data/lib/jsonapi_compliable/extensions/temp_id.rb +11 -0
- data/lib/jsonapi_compliable/query.rb +94 -2
- data/lib/jsonapi_compliable/rails.rb +8 -0
- data/lib/jsonapi_compliable/resource.rb +548 -11
- data/lib/jsonapi_compliable/scope.rb +43 -1
- data/lib/jsonapi_compliable/scoping/base.rb +59 -8
- data/lib/jsonapi_compliable/scoping/default_filter.rb +33 -0
- data/lib/jsonapi_compliable/scoping/extra_fields.rb +33 -0
- data/lib/jsonapi_compliable/scoping/filter.rb +29 -2
- data/lib/jsonapi_compliable/scoping/filterable.rb +4 -0
- data/lib/jsonapi_compliable/scoping/paginate.rb +33 -0
- data/lib/jsonapi_compliable/scoping/sort.rb +18 -0
- data/lib/jsonapi_compliable/sideload.rb +229 -1
- data/lib/jsonapi_compliable/stats/dsl.rb +44 -0
- data/lib/jsonapi_compliable/stats/payload.rb +20 -0
- data/lib/jsonapi_compliable/util/field_params.rb +1 -0
- data/lib/jsonapi_compliable/util/hash.rb +18 -0
- data/lib/jsonapi_compliable/util/include_params.rb +22 -0
- data/lib/jsonapi_compliable/util/persistence.rb +13 -3
- data/lib/jsonapi_compliable/util/relationship_payload.rb +2 -0
- data/lib/jsonapi_compliable/util/render_options.rb +2 -0
- data/lib/jsonapi_compliable/util/validation_response.rb +16 -0
- data/lib/jsonapi_compliable/version.rb +1 -1
- metadata +60 -5
- data/gemfiles/rails_4.gemfile.lock +0 -208
- data/gemfiles/rails_5.gemfile.lock +0 -212
- data/lib/jsonapi_compliable/write.rb +0 -93
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>
|
|
7
|
+
Class: JsonapiCompliable::Scope
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.9
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
pathId = "JsonapiCompliable::Scope";
|
|
19
|
+
relpath = '../';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
|
24
|
+
|
|
25
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="nav_wrap">
|
|
31
|
+
<iframe id="nav" src="../class_list.html?1"></iframe>
|
|
32
|
+
<div id="resizer"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="main" tabindex="-1">
|
|
36
|
+
<div id="header">
|
|
37
|
+
<div id="menu">
|
|
38
|
+
|
|
39
|
+
<a href="../_index.html">Index (S)</a> »
|
|
40
|
+
<span class='title'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span>
|
|
41
|
+
»
|
|
42
|
+
<span class="title">Scope</span>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div id="search">
|
|
47
|
+
|
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
|
49
|
+
href="../class_list.html">
|
|
50
|
+
|
|
51
|
+
<svg width="24" height="24">
|
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
55
|
+
</svg>
|
|
56
|
+
</a>
|
|
57
|
+
|
|
58
|
+
</div>
|
|
59
|
+
<div class="clear"></div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div id="content"><h1>Class: JsonapiCompliable::Scope
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
</h1>
|
|
67
|
+
<div class="box_info">
|
|
68
|
+
|
|
69
|
+
<dl>
|
|
70
|
+
<dt>Inherits:</dt>
|
|
71
|
+
<dd>
|
|
72
|
+
<span class="inheritName">Object</span>
|
|
73
|
+
|
|
74
|
+
<ul class="fullTree">
|
|
75
|
+
<li>Object</li>
|
|
76
|
+
|
|
77
|
+
<li class="next">JsonapiCompliable::Scope</li>
|
|
78
|
+
|
|
79
|
+
</ul>
|
|
80
|
+
<a href="#" class="inheritanceTree">show all</a>
|
|
81
|
+
|
|
82
|
+
</dd>
|
|
83
|
+
</dl>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
<dl>
|
|
96
|
+
<dt>Defined in:</dt>
|
|
97
|
+
<dd>lib/jsonapi_compliable/scope.rb</dd>
|
|
98
|
+
</dl>
|
|
99
|
+
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<h2>Overview</h2><div class="docstring">
|
|
103
|
+
<div class="discussion">
|
|
104
|
+
|
|
105
|
+
<p>A Scope wraps an underlying object. It modifies that object using the
|
|
106
|
+
corresponding Resource and Query, and how to resolve that underlying object
|
|
107
|
+
scope.</p>
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="tags">
|
|
113
|
+
|
|
114
|
+
<div class="examples">
|
|
115
|
+
<p class="tag_title">Examples:</p>
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
<p class="example_title"><div class='inline'>
|
|
119
|
+
<p>Basic Controller usage</p>
|
|
120
|
+
</div></p>
|
|
121
|
+
|
|
122
|
+
<pre class="example code"><code><span class='kw'>def</span> <span class='id identifier rubyid_index'>index</span>
|
|
123
|
+
<span class='id identifier rubyid_base'>base</span> <span class='op'>=</span> <span class='const'>Post</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span>
|
|
124
|
+
<span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_base'>base</span><span class='rparen'>)</span>
|
|
125
|
+
<span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_object'>object</span> <span class='op'>==</span> <span class='id identifier rubyid_base'>base</span> <span class='comment'># => true
|
|
126
|
+
</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_object'>object</span> <span class='op'>=</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>active:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
|
127
|
+
|
|
128
|
+
<span class='comment'># actually fires sql
|
|
129
|
+
</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_resolve'>resolve</span> <span class='comment'>#=> [#<Post ...>, #<Post ...>, etc]
|
|
130
|
+
</span><span class='kw'>end</span></code></pre>
|
|
131
|
+
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<h2>
|
|
144
|
+
Instance Method Summary
|
|
145
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
|
146
|
+
</h2>
|
|
147
|
+
|
|
148
|
+
<ul class="summary">
|
|
149
|
+
|
|
150
|
+
<li class="public ">
|
|
151
|
+
<span class="summary_signature">
|
|
152
|
+
|
|
153
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(object, resource, query, opts = {}) ⇒ Scope </a>
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
</span>
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
<span class="note title constructor">constructor</span>
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
<span class="summary_desc"><div class='inline'>
|
|
170
|
+
<p>A new instance of Scope.</p>
|
|
171
|
+
</div></span>
|
|
172
|
+
|
|
173
|
+
</li>
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
<li class="public ">
|
|
177
|
+
<span class="summary_signature">
|
|
178
|
+
|
|
179
|
+
<a href="#query_hash-instance_method" title="#query_hash (instance method)">#<strong>query_hash</strong> ⇒ Object </a>
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
</span>
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
<span class="private note title">private</span>
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
<span class="summary_desc"><div class='inline'>
|
|
194
|
+
<p>The slice of Query#to_hash for the current namespace.</p>
|
|
195
|
+
</div></span>
|
|
196
|
+
|
|
197
|
+
</li>
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
<li class="public ">
|
|
201
|
+
<span class="summary_signature">
|
|
202
|
+
|
|
203
|
+
<a href="#resolve-instance_method" title="#resolve (instance method)">#<strong>resolve</strong> ⇒ Array </a>
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
</span>
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
<span class="summary_desc"><div class='inline'>
|
|
218
|
+
<p>Resolve the scope.</p>
|
|
219
|
+
</div></span>
|
|
220
|
+
|
|
221
|
+
</li>
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
<li class="public ">
|
|
225
|
+
<span class="summary_signature">
|
|
226
|
+
|
|
227
|
+
<a href="#resolve_stats-instance_method" title="#resolve_stats (instance method)">#<strong>resolve_stats</strong> ⇒ Hash </a>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
</span>
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
<span class="private note title">private</span>
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
<span class="summary_desc"><div class='inline'>
|
|
242
|
+
<p>Resolve the requested stats.</p>
|
|
243
|
+
</div></span>
|
|
244
|
+
|
|
245
|
+
</li>
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
</ul>
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
<div id="constructor_details" class="method_details_list">
|
|
252
|
+
<h2>Constructor Details</h2>
|
|
253
|
+
|
|
254
|
+
<div class="method_details first">
|
|
255
|
+
<h3 class="signature first" id="initialize-instance_method">
|
|
256
|
+
|
|
257
|
+
#<strong>initialize</strong>(object, resource, query, opts = {}) ⇒ <tt><span class='object_link'><a href="" title="JsonapiCompliable::Scope (class)">Scope</a></span></tt>
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
</h3><div class="docstring">
|
|
264
|
+
<div class="discussion">
|
|
265
|
+
|
|
266
|
+
<p>Returns a new instance of Scope</p>
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
<div class="tags">
|
|
272
|
+
<p class="tag_title">Parameters:</p>
|
|
273
|
+
<ul class="param">
|
|
274
|
+
|
|
275
|
+
<li>
|
|
276
|
+
|
|
277
|
+
<span class='name'>object</span>
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
<span class='type'></span>
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
—
|
|
285
|
+
<div class='inline'><ul><li>
|
|
286
|
+
<p>The underlying, chainable base scope object</p>
|
|
287
|
+
</li></ul>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
</li>
|
|
291
|
+
|
|
292
|
+
<li>
|
|
293
|
+
|
|
294
|
+
<span class='name'>resource</span>
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
<span class='type'></span>
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
—
|
|
302
|
+
<div class='inline'><ul><li>
|
|
303
|
+
<p>The Resource that will process the object</p>
|
|
304
|
+
</li></ul>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
</li>
|
|
308
|
+
|
|
309
|
+
<li>
|
|
310
|
+
|
|
311
|
+
<span class='name'>query</span>
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
<span class='type'></span>
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
—
|
|
319
|
+
<div class='inline'><ul><li>
|
|
320
|
+
<p>The Query object for the current request</p>
|
|
321
|
+
</li></ul>
|
|
322
|
+
</div>
|
|
323
|
+
|
|
324
|
+
</li>
|
|
325
|
+
|
|
326
|
+
<li>
|
|
327
|
+
|
|
328
|
+
<span class='name'>opts</span>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
<em class="default">(defaults to: <tt>{}</tt>)</em>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
—
|
|
338
|
+
<div class='inline'>
|
|
339
|
+
<p>Options to configure the Scope</p>
|
|
340
|
+
</div>
|
|
341
|
+
|
|
342
|
+
</li>
|
|
343
|
+
|
|
344
|
+
</ul>
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
<p class="tag_title">Options Hash (<tt>opts</tt>):</p>
|
|
356
|
+
<ul class="option">
|
|
357
|
+
|
|
358
|
+
<li>
|
|
359
|
+
<span class="name">:namespace</span>
|
|
360
|
+
<span class="type">(<tt>String</tt>)</span>
|
|
361
|
+
<span class="default">
|
|
362
|
+
|
|
363
|
+
</span>
|
|
364
|
+
|
|
365
|
+
— <div class='inline'>
|
|
366
|
+
<p>The nested relationship name</p>
|
|
367
|
+
</div>
|
|
368
|
+
|
|
369
|
+
</li>
|
|
370
|
+
|
|
371
|
+
<li>
|
|
372
|
+
<span class="name">:filter</span>
|
|
373
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
374
|
+
<span class="default">
|
|
375
|
+
|
|
376
|
+
</span>
|
|
377
|
+
|
|
378
|
+
— <div class='inline'>
|
|
379
|
+
<p>Opt-out of filter scoping</p>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
382
|
+
</li>
|
|
383
|
+
|
|
384
|
+
<li>
|
|
385
|
+
<span class="name">:extra_fields</span>
|
|
386
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
387
|
+
<span class="default">
|
|
388
|
+
|
|
389
|
+
</span>
|
|
390
|
+
|
|
391
|
+
— <div class='inline'>
|
|
392
|
+
<p>Opt-out of extra_fields scoping</p>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
</li>
|
|
396
|
+
|
|
397
|
+
<li>
|
|
398
|
+
<span class="name">:sort</span>
|
|
399
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
400
|
+
<span class="default">
|
|
401
|
+
|
|
402
|
+
</span>
|
|
403
|
+
|
|
404
|
+
— <div class='inline'>
|
|
405
|
+
<p>Opt-out of sort scoping</p>
|
|
406
|
+
</div>
|
|
407
|
+
|
|
408
|
+
</li>
|
|
409
|
+
|
|
410
|
+
<li>
|
|
411
|
+
<span class="name">:pagination</span>
|
|
412
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
413
|
+
<span class="default">
|
|
414
|
+
|
|
415
|
+
</span>
|
|
416
|
+
|
|
417
|
+
— <div class='inline'>
|
|
418
|
+
<p>Opt-out of pagination scoping</p>
|
|
419
|
+
</div>
|
|
420
|
+
|
|
421
|
+
</li>
|
|
422
|
+
|
|
423
|
+
<li>
|
|
424
|
+
<span class="name">:default_paginate</span>
|
|
425
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
426
|
+
<span class="default">
|
|
427
|
+
|
|
428
|
+
</span>
|
|
429
|
+
|
|
430
|
+
— <div class='inline'>
|
|
431
|
+
<p>Opt-out of default pagination when not specified in request</p>
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
</li>
|
|
435
|
+
|
|
436
|
+
</ul>
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
</div><table class="source_code">
|
|
441
|
+
<tr>
|
|
442
|
+
<td>
|
|
443
|
+
<pre class="lines">
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
27
|
|
447
|
+
28
|
|
448
|
+
29
|
|
449
|
+
30
|
|
450
|
+
31
|
|
451
|
+
32
|
|
452
|
+
33
|
|
453
|
+
34
|
|
454
|
+
35
|
|
455
|
+
36
|
|
456
|
+
37
|
|
457
|
+
38
|
|
458
|
+
39</pre>
|
|
459
|
+
</td>
|
|
460
|
+
<td>
|
|
461
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/scope.rb', line 27</span>
|
|
462
|
+
|
|
463
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='comma'>,</span> <span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
|
464
|
+
<span class='ivar'>@object</span> <span class='op'>=</span> <span class='id identifier rubyid_object'>object</span>
|
|
465
|
+
<span class='ivar'>@resource</span> <span class='op'>=</span> <span class='id identifier rubyid_resource'>resource</span>
|
|
466
|
+
<span class='ivar'>@query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span>
|
|
467
|
+
|
|
468
|
+
<span class='comment'># Namespace for the 'outer' or 'main' resource is its type
|
|
469
|
+
</span> <span class='comment'># For its relationships, its the relationship name
|
|
470
|
+
</span> <span class='comment'># IOW when hitting /states, it's resource type 'states'
|
|
471
|
+
</span> <span class='comment'># when hitting /authors?include=state its 'state'
|
|
472
|
+
</span> <span class='ivar'>@namespace</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:namespace</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span>
|
|
473
|
+
|
|
474
|
+
<span class='id identifier rubyid_apply_scoping'>apply_scoping</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
|
475
|
+
<span class='kw'>end</span></pre>
|
|
476
|
+
</td>
|
|
477
|
+
</tr>
|
|
478
|
+
</table>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
</div>
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
<div id="instance_method_details" class="method_details_list">
|
|
485
|
+
<h2>Instance Method Details</h2>
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
<div class="method_details first">
|
|
489
|
+
<h3 class="signature first" id="query_hash-instance_method">
|
|
490
|
+
|
|
491
|
+
#<strong>query_hash</strong> ⇒ <tt>Object</tt>
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
</h3><div class="docstring">
|
|
498
|
+
<div class="discussion">
|
|
499
|
+
<p class="note private">
|
|
500
|
+
<strong>This method is part of a private API.</strong>
|
|
501
|
+
You should avoid using this method if possible, as it may be removed or be changed in the future.
|
|
502
|
+
</p>
|
|
503
|
+
|
|
504
|
+
<p>The slice of Query#to_hash for the current namespace</p>
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
</div>
|
|
508
|
+
</div>
|
|
509
|
+
<div class="tags">
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
<p class="tag_title">See Also:</p>
|
|
513
|
+
<ul class="see">
|
|
514
|
+
|
|
515
|
+
<li><span class='object_link'><a href="Query.html#to_hash-instance_method" title="JsonapiCompliable::Query#to_hash (method)">Query#to_hash</a></span></li>
|
|
516
|
+
|
|
517
|
+
</ul>
|
|
518
|
+
|
|
519
|
+
</div><table class="source_code">
|
|
520
|
+
<tr>
|
|
521
|
+
<td>
|
|
522
|
+
<pre class="lines">
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
73
|
|
526
|
+
74
|
|
527
|
+
75</pre>
|
|
528
|
+
</td>
|
|
529
|
+
<td>
|
|
530
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/scope.rb', line 73</span>
|
|
531
|
+
|
|
532
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_query_hash'>query_hash</span>
|
|
533
|
+
<span class='ivar'>@query_hash</span> <span class='op'>||=</span> <span class='ivar'>@query</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span><span class='lbracket'>[</span><span class='ivar'>@namespace</span><span class='rbracket'>]</span>
|
|
534
|
+
<span class='kw'>end</span></pre>
|
|
535
|
+
</td>
|
|
536
|
+
</tr>
|
|
537
|
+
</table>
|
|
538
|
+
</div>
|
|
539
|
+
|
|
540
|
+
<div class="method_details ">
|
|
541
|
+
<h3 class="signature " id="resolve-instance_method">
|
|
542
|
+
|
|
543
|
+
#<strong>resolve</strong> ⇒ <tt>Array</tt>
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
</h3><div class="docstring">
|
|
550
|
+
<div class="discussion">
|
|
551
|
+
|
|
552
|
+
<p>Resolve the scope. This is where SQL is actually fired, an HTTP request is
|
|
553
|
+
actually made, etc.</p>
|
|
554
|
+
|
|
555
|
+
<p>Does nothing if the user requested zero results, ie /<a
|
|
556
|
+
href="size">posts?page</a>=0</p>
|
|
557
|
+
|
|
558
|
+
<p>First resolves the top-level resource, then processes each relevant
|
|
559
|
+
sideload</p>
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
</div>
|
|
563
|
+
</div>
|
|
564
|
+
<div class="tags">
|
|
565
|
+
|
|
566
|
+
<p class="tag_title">Returns:</p>
|
|
567
|
+
<ul class="return">
|
|
568
|
+
|
|
569
|
+
<li>
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
<span class='type'>(<tt>Array</tt>)</span>
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
—
|
|
577
|
+
<div class='inline'>
|
|
578
|
+
<p>an array of resolved model instances</p>
|
|
579
|
+
</div>
|
|
580
|
+
|
|
581
|
+
</li>
|
|
582
|
+
|
|
583
|
+
</ul>
|
|
584
|
+
|
|
585
|
+
<p class="tag_title">See Also:</p>
|
|
586
|
+
<ul class="see">
|
|
587
|
+
|
|
588
|
+
<li><span class='object_link'><a href="Resource.html#resolve-instance_method" title="JsonapiCompliable::Resource#resolve (method)">Resource#resolve</a></span></li>
|
|
589
|
+
|
|
590
|
+
</ul>
|
|
591
|
+
|
|
592
|
+
</div><table class="source_code">
|
|
593
|
+
<tr>
|
|
594
|
+
<td>
|
|
595
|
+
<pre class="lines">
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
60
|
|
599
|
+
61
|
|
600
|
+
62
|
|
601
|
+
63
|
|
602
|
+
64
|
|
603
|
+
65
|
|
604
|
+
66
|
|
605
|
+
67
|
|
606
|
+
68</pre>
|
|
607
|
+
</td>
|
|
608
|
+
<td>
|
|
609
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/scope.rb', line 60</span>
|
|
610
|
+
|
|
611
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_resolve'>resolve</span>
|
|
612
|
+
<span class='kw'>if</span> <span class='ivar'>@query</span><span class='period'>.</span><span class='id identifier rubyid_zero_results?'>zero_results?</span>
|
|
613
|
+
<span class='lbracket'>[</span><span class='rbracket'>]</span>
|
|
614
|
+
<span class='kw'>else</span>
|
|
615
|
+
<span class='id identifier rubyid_resolved'>resolved</span> <span class='op'>=</span> <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_resolve'>resolve</span><span class='lparen'>(</span><span class='ivar'>@object</span><span class='rparen'>)</span>
|
|
616
|
+
<span class='id identifier rubyid_sideload'>sideload</span><span class='lparen'>(</span><span class='id identifier rubyid_resolved'>resolved</span><span class='comma'>,</span> <span class='id identifier rubyid_query_hash'>query_hash</span><span class='lbracket'>[</span><span class='symbol'>:include</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_query_hash'>query_hash</span><span class='lbracket'>[</span><span class='symbol'>:include</span><span class='rbracket'>]</span>
|
|
617
|
+
<span class='id identifier rubyid_resolved'>resolved</span>
|
|
618
|
+
<span class='kw'>end</span>
|
|
619
|
+
<span class='kw'>end</span></pre>
|
|
620
|
+
</td>
|
|
621
|
+
</tr>
|
|
622
|
+
</table>
|
|
623
|
+
</div>
|
|
624
|
+
|
|
625
|
+
<div class="method_details ">
|
|
626
|
+
<h3 class="signature " id="resolve_stats-instance_method">
|
|
627
|
+
|
|
628
|
+
#<strong>resolve_stats</strong> ⇒ <tt>Hash</tt>
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
</h3><div class="docstring">
|
|
635
|
+
<div class="discussion">
|
|
636
|
+
<p class="note private">
|
|
637
|
+
<strong>This method is part of a private API.</strong>
|
|
638
|
+
You should avoid using this method if possible, as it may be removed or be changed in the future.
|
|
639
|
+
</p>
|
|
640
|
+
|
|
641
|
+
<p>Resolve the requested stats. Returns hash like:</p>
|
|
642
|
+
|
|
643
|
+
<pre class="code ruby"><code class="ruby"><span class='lbrace'>{</span> <span class='label'>rating:</span> <span class='lbrace'>{</span> <span class='label'>average:</span> <span class='float'>5.5</span><span class='comma'>,</span> <span class='label'>maximum:</span> <span class='int'>9</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span>
|
|
644
|
+
</code></pre>
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
</div>
|
|
648
|
+
</div>
|
|
649
|
+
<div class="tags">
|
|
650
|
+
|
|
651
|
+
<p class="tag_title">Returns:</p>
|
|
652
|
+
<ul class="return">
|
|
653
|
+
|
|
654
|
+
<li>
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
—
|
|
662
|
+
<div class='inline'>
|
|
663
|
+
<p>the resolved stat info</p>
|
|
664
|
+
</div>
|
|
665
|
+
|
|
666
|
+
</li>
|
|
667
|
+
|
|
668
|
+
</ul>
|
|
669
|
+
|
|
670
|
+
</div><table class="source_code">
|
|
671
|
+
<tr>
|
|
672
|
+
<td>
|
|
673
|
+
<pre class="lines">
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
47
|
|
677
|
+
48
|
|
678
|
+
49</pre>
|
|
679
|
+
</td>
|
|
680
|
+
<td>
|
|
681
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/scope.rb', line 47</span>
|
|
682
|
+
|
|
683
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_resolve_stats'>resolve_stats</span>
|
|
684
|
+
<span class='const'><span class='object_link'><a href="Stats.html" title="JsonapiCompliable::Stats (module)">Stats</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stats/Payload.html" title="JsonapiCompliable::Stats::Payload (class)">Payload</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Stats/Payload.html#initialize-instance_method" title="JsonapiCompliable::Stats::Payload#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='ivar'>@resource</span><span class='comma'>,</span> <span class='id identifier rubyid_query_hash'>query_hash</span><span class='comma'>,</span> <span class='ivar'>@unpaginated_object</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_generate'><span class='object_link'><a href="Stats/Payload.html#generate-instance_method" title="JsonapiCompliable::Stats::Payload#generate (method)">generate</a></span></span>
|
|
685
|
+
<span class='kw'>end</span></pre>
|
|
686
|
+
</td>
|
|
687
|
+
</tr>
|
|
688
|
+
</table>
|
|
689
|
+
</div>
|
|
690
|
+
|
|
691
|
+
</div>
|
|
692
|
+
|
|
693
|
+
</div>
|
|
694
|
+
|
|
695
|
+
<div id="footer">
|
|
696
|
+
Generated on Fri May 5 15:53:22 2017 by
|
|
697
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
698
|
+
0.9.9 (ruby-2.3.0).
|
|
699
|
+
</div>
|
|
700
|
+
|
|
701
|
+
</div>
|
|
702
|
+
</body>
|
|
703
|
+
</html>
|