kabk 0.2.0

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.

Potentially problematic release.


This version of kabk might be problematic. Click here for more details.

Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +27 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +108 -0
  5. data/Kabk_logo.svg +33 -0
  6. data/LICENSE +21 -0
  7. data/README.md +101 -0
  8. data/doc/Kabk/Adapters/Base.html +854 -0
  9. data/doc/Kabk/Adapters/SequelAdapter.html +948 -0
  10. data/doc/Kabk/Adapters.html +120 -0
  11. data/doc/Kabk/ApiError.html +511 -0
  12. data/doc/Kabk/Auth/JwtStrategy.html +551 -0
  13. data/doc/Kabk/Auth.html +118 -0
  14. data/doc/Kabk/Concurrency.html +297 -0
  15. data/doc/Kabk/ConcurrencyConflictError.html +225 -0
  16. data/doc/Kabk/Error.html +140 -0
  17. data/doc/Kabk/ExportHandler.html +381 -0
  18. data/doc/Kabk/Field.html +2160 -0
  19. data/doc/Kabk/ForbiddenError.html +225 -0
  20. data/doc/Kabk/InvalidFieldError.html +136 -0
  21. data/doc/Kabk/InvalidOldPasswordError.html +225 -0
  22. data/doc/Kabk/NotFoundError.html +225 -0
  23. data/doc/Kabk/QueryBuilder.html +551 -0
  24. data/doc/Kabk/Registry.html +608 -0
  25. data/doc/Kabk/RelationHydrator.html +480 -0
  26. data/doc/Kabk/Resource.html +1986 -0
  27. data/doc/Kabk/ResourceBuilder.html +1002 -0
  28. data/doc/Kabk/RestEngine.html +879 -0
  29. data/doc/Kabk/SchemaRenderer.html +318 -0
  30. data/doc/Kabk/UnauthorizedError.html +225 -0
  31. data/doc/Kabk/UploadHandler.html +308 -0
  32. data/doc/Kabk/ValidationError.html +225 -0
  33. data/doc/Kabk/Validator.html +380 -0
  34. data/doc/Kabk.html +330 -0
  35. data/doc/_index.html +376 -0
  36. data/doc/class_list.html +54 -0
  37. data/doc/css/common.css +1 -0
  38. data/doc/css/full_list.css +206 -0
  39. data/doc/css/style.css +1089 -0
  40. data/doc/file.README.html +149 -0
  41. data/doc/file_list.html +59 -0
  42. data/doc/frames.html +22 -0
  43. data/doc/index.html +149 -0
  44. data/doc/js/app.js +801 -0
  45. data/doc/js/full_list.js +334 -0
  46. data/doc/js/jquery.js +4 -0
  47. data/doc/method_list.html +910 -0
  48. data/doc/top-level-namespace.html +112 -0
  49. data/docs/API_REFERENCE.md +241 -0
  50. data/lib/kabk/adapters/base.rb +45 -0
  51. data/lib/kabk/adapters/sequel_adapter.rb +125 -0
  52. data/lib/kabk/concurrency.rb +30 -0
  53. data/lib/kabk/errors.rb +62 -0
  54. data/lib/kabk/export_handler.rb +43 -0
  55. data/lib/kabk/field.rb +97 -0
  56. data/lib/kabk/query_builder.rb +72 -0
  57. data/lib/kabk/registry.rb +41 -0
  58. data/lib/kabk/relation_hydrator.rb +107 -0
  59. data/lib/kabk/resource.rb +88 -0
  60. data/lib/kabk/resource_builder.rb +93 -0
  61. data/lib/kabk/rest_engine.rb +84 -0
  62. data/lib/kabk/schema_renderer.rb +69 -0
  63. data/lib/kabk/upload_handler.rb +24 -0
  64. data/lib/kabk/validator.rb +64 -0
  65. data/lib/kabk/version.rb +6 -0
  66. data/lib/kabk.rb +51 -0
  67. metadata +193 -0
@@ -0,0 +1,879 @@
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: Kabk::RestEngine
8
+
9
+ &mdash; Documentation by YARD 0.9.45
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css">
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css">
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Kabk::RestEngine";
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 id="main_progress" aria-hidden="true"></div>
31
+
32
+ <div class="nav_wrap">
33
+ <iframe id="nav" src="../class_list.html?1"></iframe>
34
+ <div id="resizer"></div>
35
+ </div>
36
+
37
+ <div id="main" tabindex="-1">
38
+ <div id="header">
39
+ <div id="menu">
40
+
41
+ <a href="../_index.html">Index (R)</a> &raquo;
42
+ <span class='title'><span class='object_link'><a href="../Kabk.html" title="Kabk (module)">Kabk</a></span></span>
43
+ &raquo;
44
+ <span class="title">RestEngine</span>
45
+
46
+ </div>
47
+
48
+ <div id="search">
49
+
50
+ <a class="full_list_link" id="class_list_link"
51
+ href="../class_list.html">
52
+
53
+ <svg width="24" height="24">
54
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
55
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
56
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
57
+ </svg>
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <div id="content"><h1>Class: Kabk::RestEngine
65
+
66
+
67
+
68
+ </h1>
69
+ <div class="box_info">
70
+
71
+ <dl>
72
+ <dt>Inherits:</dt>
73
+ <dd>
74
+ <span class="inheritName">Object</span>
75
+
76
+ <ul class="fullTree">
77
+ <li>Object</li>
78
+
79
+ <li class="next">Kabk::RestEngine</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <dl>
98
+ <dt>Defined in:</dt>
99
+ <dd>lib/kabk/rest_engine.rb
100
+ </dd>
101
+ </dl>
102
+
103
+ </div>
104
+
105
+ <h2>Overview</h2><div class="docstring">
106
+ <div class="discussion">
107
+ <p>Generic CRUD engine for any registered resource, agnostic to the underlying database</p>
108
+
109
+ </div>
110
+ </div>
111
+ <div class="tags">
112
+
113
+
114
+ </div>
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+ <h2>
123
+ Instance Method Summary
124
+ <small><a href="#" class="summary_toggle">collapse</a></small>
125
+ </h2>
126
+
127
+ <ul class="summary">
128
+
129
+ <li class="public ">
130
+ <span class="summary_signature">
131
+
132
+ <a href="#create-instance_method" title="#create (instance method)">#<strong>create</strong>(params, context: {}) &#x21d2; Hash </a>
133
+
134
+
135
+
136
+ </span>
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+ <span class="summary_desc"><div class='inline'><p>Create a new resource.</p></div></span>
147
+
148
+ </li>
149
+
150
+
151
+ <li class="public ">
152
+ <span class="summary_signature">
153
+
154
+ <a href="#delete-instance_method" title="#delete (instance method)">#<strong>delete</strong>(id, context: {}) &#x21d2; Hash </a>
155
+
156
+
157
+
158
+ </span>
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+ <span class="summary_desc"><div class='inline'><p>Delete a resource by ID.</p></div></span>
169
+
170
+ </li>
171
+
172
+
173
+ <li class="public ">
174
+ <span class="summary_signature">
175
+
176
+ <a href="#get-instance_method" title="#get (instance method)">#<strong>get</strong>(id, context: {}) &#x21d2; Hash </a>
177
+
178
+
179
+
180
+ </span>
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+ <span class="summary_desc"><div class='inline'><p>Get single resource by ID.</p></div></span>
191
+
192
+ </li>
193
+
194
+
195
+ <li class="public ">
196
+ <span class="summary_signature">
197
+
198
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(resource_name) &#x21d2; RestEngine </a>
199
+
200
+
201
+
202
+ </span>
203
+
204
+
205
+ <span class="note title constructor">constructor</span>
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+ <span class="summary_desc"><div class='inline'><p>A new instance of RestEngine.</p></div></span>
215
+
216
+ </li>
217
+
218
+
219
+ <li class="public ">
220
+ <span class="summary_signature">
221
+
222
+ <a href="#list-instance_method" title="#list (instance method)">#<strong>list</strong>(params, context: {}) &#x21d2; Hash </a>
223
+
224
+
225
+
226
+ </span>
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+ <span class="summary_desc"><div class='inline'><p>List resources with pagination, sorting, filtering.</p></div></span>
237
+
238
+ </li>
239
+
240
+
241
+ <li class="public ">
242
+ <span class="summary_signature">
243
+
244
+ <a href="#update-instance_method" title="#update (instance method)">#<strong>update</strong>(id, params, context: {}) &#x21d2; Hash </a>
245
+
246
+
247
+
248
+ </span>
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ <span class="summary_desc"><div class='inline'><p>Update an existing resource.</p></div></span>
259
+
260
+ </li>
261
+
262
+
263
+ </ul>
264
+
265
+
266
+
267
+ <div id="constructor_details" class="method_details_list">
268
+ <h2>Constructor Details</h2>
269
+
270
+ <div class="method_details first">
271
+ <h3 class="signature first" id="initialize-instance_method">
272
+
273
+ #<strong>initialize</strong>(resource_name) &#x21d2; <tt><span class='object_link'><a href="" title="Kabk::RestEngine (class)">RestEngine</a></span></tt>
274
+
275
+
276
+
277
+
278
+
279
+ </h3><div class="docstring">
280
+ <div class="discussion">
281
+ <p>Returns a new instance of RestEngine.</p>
282
+
283
+ </div>
284
+ </div>
285
+ <div class="tags">
286
+ <p class="tag_title">Parameters:</p>
287
+ <ul class="param">
288
+
289
+ <li>
290
+
291
+ <span class='name'>resource_name</span>
292
+
293
+
294
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>)</span>
295
+
296
+
297
+
298
+ </li>
299
+
300
+ </ul>
301
+
302
+ <p class="tag_title">Raises:</p>
303
+ <ul class="raise">
304
+
305
+ <li>
306
+
307
+
308
+ <span class='type'>(<tt><span class='object_link'><a href="NotFoundError.html" title="Kabk::NotFoundError (class)">NotFoundError</a></span></tt>)</span>
309
+
310
+
311
+
312
+ </li>
313
+
314
+ </ul>
315
+
316
+ </div><table class="source_code">
317
+ <tr>
318
+ <td>
319
+ <pre class="lines">
320
+
321
+
322
+ 9
323
+ 10
324
+ 11
325
+ 12
326
+ 13
327
+ 14
328
+ 15</pre>
329
+ </td>
330
+ <td>
331
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 9</span>
332
+
333
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_resource_name'>resource_name</span><span class='rparen'>)</span>
334
+ <span class='ivar'>@resource</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Registry.html" title="Kabk::Registry (class)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'><span class='object_link'><a href="Registry.html#instance-class_method" title="Kabk::Registry.instance (method)">instance</a></span></span><span class='period'>.</span><span class='id identifier rubyid_get'><span class='object_link'><a href="Registry.html#get-instance_method" title="Kabk::Registry#get (method)">get</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_resource_name'>resource_name</span><span class='rparen'>)</span>
335
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="NotFoundError.html" title="Kabk::NotFoundError (class)">NotFoundError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resource not found</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='ivar'>@resource</span>
336
+
337
+ <span class='ivar'>@adapter</span> <span class='op'>=</span> <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_adapter'>adapter</span>
338
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>StandardError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resource has no adapter configured</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='ivar'>@adapter</span>
339
+ <span class='kw'>end</span></pre>
340
+ </td>
341
+ </tr>
342
+ </table>
343
+ </div>
344
+
345
+ </div>
346
+
347
+
348
+ <div id="instance_method_details" class="method_details_list">
349
+ <h2>Instance Method Details</h2>
350
+
351
+
352
+ <div class="method_details first">
353
+ <h3 class="signature first" id="create-instance_method">
354
+
355
+ #<strong>create</strong>(params, context: {}) &#x21d2; <tt>Hash</tt>
356
+
357
+
358
+
359
+
360
+
361
+ </h3><div class="docstring">
362
+ <div class="discussion">
363
+ <p>Create a new resource. Executes lifecycle hooks, validates parameters, and delegates to the adapter.</p>
364
+
365
+ </div>
366
+ </div>
367
+ <div class="tags">
368
+ <p class="tag_title">Parameters:</p>
369
+ <ul class="param">
370
+
371
+ <li>
372
+
373
+ <span class='name'>params</span>
374
+
375
+
376
+ <span class='type'>(<tt>Hash</tt>)</span>
377
+
378
+
379
+
380
+ &mdash;
381
+ <div class='inline'><p>The raw input attributes from the request payload.</p></div>
382
+
383
+ </li>
384
+
385
+ <li>
386
+
387
+ <span class='name'>context</span>
388
+
389
+
390
+ <span class='type'>(<tt>Hash</tt>)</span>
391
+
392
+
393
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
394
+
395
+
396
+ &mdash;
397
+ <div class='inline'><p>Context provided by host framework.</p></div>
398
+
399
+ </li>
400
+
401
+ </ul>
402
+
403
+ <p class="tag_title">Returns:</p>
404
+ <ul class="return">
405
+
406
+ <li>
407
+
408
+
409
+ <span class='type'>(<tt>Hash</tt>)</span>
410
+
411
+
412
+
413
+ &mdash;
414
+ <div class='inline'><p>A standard protocol response hash or an error hash if a hook/validation fails.</p></div>
415
+
416
+ </li>
417
+
418
+ </ul>
419
+
420
+ </div><table class="source_code">
421
+ <tr>
422
+ <td>
423
+ <pre class="lines">
424
+
425
+
426
+ 41
427
+ 42
428
+ 43
429
+ 44
430
+ 45
431
+ 46
432
+ 47
433
+ 48
434
+ 49
435
+ 50</pre>
436
+ </td>
437
+ <td>
438
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 41</span>
439
+
440
+ <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
441
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:before_create</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
442
+ <span class='id identifier rubyid_sanitized'>sanitized</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Validator.html" title="Kabk::Validator (class)">Validator</a></span></span><span class='period'>.</span><span class='id identifier rubyid_validate_and_sanitize!'><span class='object_link'><a href="Validator.html#validate_and_sanitize!-class_method" title="Kabk::Validator.validate_and_sanitize! (method)">validate_and_sanitize!</a></span></span><span class='lparen'>(</span><span class='ivar'>@resource</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
443
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_sanitized'>sanitized</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
444
+
445
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:after_create</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='symbol'>:data</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
446
+ <span class='id identifier rubyid_result'>result</span>
447
+ <span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="ApiError.html" title="Kabk::ApiError (class)">ApiError</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
448
+ <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
449
+ <span class='kw'>end</span></pre>
450
+ </td>
451
+ </tr>
452
+ </table>
453
+ </div>
454
+
455
+ <div class="method_details ">
456
+ <h3 class="signature " id="delete-instance_method">
457
+
458
+ #<strong>delete</strong>(id, context: {}) &#x21d2; <tt>Hash</tt>
459
+
460
+
461
+
462
+
463
+
464
+ </h3><div class="docstring">
465
+ <div class="discussion">
466
+ <p>Delete a resource by ID. Executes lifecycle hooks and delegates to the adapter.</p>
467
+
468
+ </div>
469
+ </div>
470
+ <div class="tags">
471
+ <p class="tag_title">Parameters:</p>
472
+ <ul class="param">
473
+
474
+ <li>
475
+
476
+ <span class='name'>id</span>
477
+
478
+
479
+ <span class='type'>(<tt>Integer</tt>, <tt>String</tt>)</span>
480
+
481
+
482
+
483
+ &mdash;
484
+ <div class='inline'><p>The primary key of the record.</p></div>
485
+
486
+ </li>
487
+
488
+ <li>
489
+
490
+ <span class='name'>context</span>
491
+
492
+
493
+ <span class='type'>(<tt>Hash</tt>)</span>
494
+
495
+
496
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
497
+
498
+
499
+ &mdash;
500
+ <div class='inline'><p>Context provided by host framework.</p></div>
501
+
502
+ </li>
503
+
504
+ </ul>
505
+
506
+ <p class="tag_title">Returns:</p>
507
+ <ul class="return">
508
+
509
+ <li>
510
+
511
+
512
+ <span class='type'>(<tt>Hash</tt>)</span>
513
+
514
+
515
+
516
+ &mdash;
517
+ <div class='inline'><p>A standard protocol response hash indicating success or an error hash if a hook fails.</p></div>
518
+
519
+ </li>
520
+
521
+ </ul>
522
+
523
+ </div><table class="source_code">
524
+ <tr>
525
+ <td>
526
+ <pre class="lines">
527
+
528
+
529
+ 74
530
+ 75
531
+ 76
532
+ 77
533
+ 78
534
+ 79
535
+ 80
536
+ 81
537
+ 82</pre>
538
+ </td>
539
+ <td>
540
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 74</span>
541
+
542
+ <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
543
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:before_delete</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
544
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
545
+
546
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:after_delete</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
547
+ <span class='id identifier rubyid_result'>result</span>
548
+ <span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="ApiError.html" title="Kabk::ApiError (class)">ApiError</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
549
+ <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
550
+ <span class='kw'>end</span></pre>
551
+ </td>
552
+ </tr>
553
+ </table>
554
+ </div>
555
+
556
+ <div class="method_details ">
557
+ <h3 class="signature " id="get-instance_method">
558
+
559
+ #<strong>get</strong>(id, context: {}) &#x21d2; <tt>Hash</tt>
560
+
561
+
562
+
563
+
564
+
565
+ </h3><div class="docstring">
566
+ <div class="discussion">
567
+ <p>Get single resource by ID.</p>
568
+
569
+ </div>
570
+ </div>
571
+ <div class="tags">
572
+ <p class="tag_title">Parameters:</p>
573
+ <ul class="param">
574
+
575
+ <li>
576
+
577
+ <span class='name'>id</span>
578
+
579
+
580
+ <span class='type'>(<tt>Integer</tt>, <tt>String</tt>)</span>
581
+
582
+
583
+
584
+ &mdash;
585
+ <div class='inline'><p>The primary key of the record.</p></div>
586
+
587
+ </li>
588
+
589
+ <li>
590
+
591
+ <span class='name'>context</span>
592
+
593
+
594
+ <span class='type'>(<tt>Hash</tt>)</span>
595
+
596
+
597
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
598
+
599
+
600
+ &mdash;
601
+ <div class='inline'><p>Context provided by host framework.</p></div>
602
+
603
+ </li>
604
+
605
+ </ul>
606
+
607
+ <p class="tag_title">Returns:</p>
608
+ <ul class="return">
609
+
610
+ <li>
611
+
612
+
613
+ <span class='type'>(<tt>Hash</tt>)</span>
614
+
615
+
616
+
617
+ &mdash;
618
+ <div class='inline'><p>A standard protocol response hash with success and data properties.</p></div>
619
+
620
+ </li>
621
+
622
+ </ul>
623
+ <p class="tag_title">Raises:</p>
624
+ <ul class="raise">
625
+
626
+ <li>
627
+
628
+
629
+ <span class='type'>(<tt><span class='object_link'><a href="NotFoundError.html" title="Kabk::NotFoundError (class)">NotFoundError</a></span></tt>)</span>
630
+
631
+
632
+
633
+ &mdash;
634
+ <div class='inline'><p>If the record does not exist.</p></div>
635
+
636
+ </li>
637
+
638
+ </ul>
639
+
640
+ </div><table class="source_code">
641
+ <tr>
642
+ <td>
643
+ <pre class="lines">
644
+
645
+
646
+ 32
647
+ 33
648
+ 34</pre>
649
+ </td>
650
+ <td>
651
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 32</span>
652
+
653
+ <span class='kw'>def</span> <span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
654
+ <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
655
+ <span class='kw'>end</span></pre>
656
+ </td>
657
+ </tr>
658
+ </table>
659
+ </div>
660
+
661
+ <div class="method_details ">
662
+ <h3 class="signature " id="list-instance_method">
663
+
664
+ #<strong>list</strong>(params, context: {}) &#x21d2; <tt>Hash</tt>
665
+
666
+
667
+
668
+
669
+
670
+ </h3><div class="docstring">
671
+ <div class="discussion">
672
+ <p>List resources with pagination, sorting, filtering.</p>
673
+
674
+ </div>
675
+ </div>
676
+ <div class="tags">
677
+ <p class="tag_title">Parameters:</p>
678
+ <ul class="param">
679
+
680
+ <li>
681
+
682
+ <span class='name'>params</span>
683
+
684
+
685
+ <span class='type'>(<tt>Hash</tt>)</span>
686
+
687
+
688
+
689
+ &mdash;
690
+ <div class='inline'><p>Request parameters (page, per_page, sort, filters).</p></div>
691
+
692
+ </li>
693
+
694
+ <li>
695
+
696
+ <span class='name'>context</span>
697
+
698
+
699
+ <span class='type'>(<tt>Hash</tt>)</span>
700
+
701
+
702
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
703
+
704
+
705
+ &mdash;
706
+ <div class='inline'><p>Context provided by host framework.</p></div>
707
+
708
+ </li>
709
+
710
+ </ul>
711
+
712
+ <p class="tag_title">Returns:</p>
713
+ <ul class="return">
714
+
715
+ <li>
716
+
717
+
718
+ <span class='type'>(<tt>Hash</tt>)</span>
719
+
720
+
721
+
722
+ &mdash;
723
+ <div class='inline'><p>A standard protocol response hash with success, data, and meta properties.</p></div>
724
+
725
+ </li>
726
+
727
+ </ul>
728
+
729
+ </div><table class="source_code">
730
+ <tr>
731
+ <td>
732
+ <pre class="lines">
733
+
734
+
735
+ 22
736
+ 23
737
+ 24</pre>
738
+ </td>
739
+ <td>
740
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 22</span>
741
+
742
+ <span class='kw'>def</span> <span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
743
+ <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_list'>list</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
744
+ <span class='kw'>end</span></pre>
745
+ </td>
746
+ </tr>
747
+ </table>
748
+ </div>
749
+
750
+ <div class="method_details ">
751
+ <h3 class="signature " id="update-instance_method">
752
+
753
+ #<strong>update</strong>(id, params, context: {}) &#x21d2; <tt>Hash</tt>
754
+
755
+
756
+
757
+
758
+
759
+ </h3><div class="docstring">
760
+ <div class="discussion">
761
+ <p>Update an existing resource. Executes lifecycle hooks and validates Optimistic Concurrency Control (OCC).</p>
762
+
763
+ </div>
764
+ </div>
765
+ <div class="tags">
766
+ <p class="tag_title">Parameters:</p>
767
+ <ul class="param">
768
+
769
+ <li>
770
+
771
+ <span class='name'>id</span>
772
+
773
+
774
+ <span class='type'>(<tt>Integer</tt>, <tt>String</tt>)</span>
775
+
776
+
777
+
778
+ &mdash;
779
+ <div class='inline'><p>The primary key of the record.</p></div>
780
+
781
+ </li>
782
+
783
+ <li>
784
+
785
+ <span class='name'>params</span>
786
+
787
+
788
+ <span class='type'>(<tt>Hash</tt>)</span>
789
+
790
+
791
+
792
+ &mdash;
793
+ <div class='inline'><p>The updated attributes from the request payload.</p></div>
794
+
795
+ </li>
796
+
797
+ <li>
798
+
799
+ <span class='name'>context</span>
800
+
801
+
802
+ <span class='type'>(<tt>Hash</tt>)</span>
803
+
804
+
805
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
806
+
807
+
808
+ &mdash;
809
+ <div class='inline'><p>Context provided by host framework.</p></div>
810
+
811
+ </li>
812
+
813
+ </ul>
814
+
815
+ <p class="tag_title">Returns:</p>
816
+ <ul class="return">
817
+
818
+ <li>
819
+
820
+
821
+ <span class='type'>(<tt>Hash</tt>)</span>
822
+
823
+
824
+
825
+ &mdash;
826
+ <div class='inline'><p>A standard protocol response hash or an error hash if a hook/validation fails.</p></div>
827
+
828
+ </li>
829
+
830
+ </ul>
831
+
832
+ </div><table class="source_code">
833
+ <tr>
834
+ <td>
835
+ <pre class="lines">
836
+
837
+
838
+ 58
839
+ 59
840
+ 60
841
+ 61
842
+ 62
843
+ 63
844
+ 64
845
+ 65
846
+ 66
847
+ 67</pre>
848
+ </td>
849
+ <td>
850
+ <pre class="code"><span class="info file"># File 'lib/kabk/rest_engine.rb', line 58</span>
851
+
852
+ <span class='kw'>def</span> <span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
853
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:before_update</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
854
+ <span class='id identifier rubyid_sanitized'>sanitized</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Validator.html" title="Kabk::Validator (class)">Validator</a></span></span><span class='period'>.</span><span class='id identifier rubyid_validate_and_sanitize!'><span class='object_link'><a href="Validator.html#validate_and_sanitize!-class_method" title="Kabk::Validator.validate_and_sanitize! (method)">validate_and_sanitize!</a></span></span><span class='lparen'>(</span><span class='ivar'>@resource</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='label'>is_update:</span> <span class='kw'>true</span><span class='rparen'>)</span>
855
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='ivar'>@adapter</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_sanitized'>sanitized</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
856
+
857
+ <span class='ivar'>@resource</span><span class='period'>.</span><span class='id identifier rubyid_hooks'>hooks</span><span class='lbracket'>[</span><span class='symbol'>:after_update</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='symbol'>:data</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
858
+ <span class='id identifier rubyid_result'>result</span>
859
+ <span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="ApiError.html" title="Kabk::ApiError (class)">ApiError</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
860
+ <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
861
+ <span class='kw'>end</span></pre>
862
+ </td>
863
+ </tr>
864
+ </table>
865
+ </div>
866
+
867
+ </div>
868
+
869
+ </div>
870
+
871
+ <div id="footer">
872
+ Generated on Tue Aug 11 21:17:07 2026 by
873
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
874
+ 0.9.45 (ruby-4.0.6).
875
+ </div>
876
+
877
+ </div>
878
+ </body>
879
+ </html>