sf_cli 0.0.8 → 0.0.10

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.
@@ -2,32 +2,28 @@ module SfCli
2
2
  module Sf
3
3
  module Sobject
4
4
  class Schema
5
- attr_reader :schema
6
-
7
5
  def initialize(schema)
8
6
  @schema = schema
9
7
  end
10
8
 
11
- def all
12
- schema
13
- end
14
-
15
9
  def name
16
- @name ||= schema['name']
10
+ schema['name']
17
11
  end
18
12
 
19
13
  def label
20
- @label ||= schema['label']
14
+ schema['label']
15
+ end
16
+
17
+ def fields
18
+ @fields ||= Fields.new(schema)
21
19
  end
22
20
 
23
21
  def field_names
24
- @field_names ||= schema['fields'].map{|f| f['name'].to_sym}
22
+ @field_names ||= fields.map{|f| f.name.to_sym}
25
23
  end
26
24
 
27
- def fields
28
- @field_map ||= schema['fields'].each_with_object({}) do |f, h|
29
- h[f['name'].to_sym] = f
30
- end
25
+ def field_labels
26
+ @field_labels ||= fields.map{|f| f.label}
31
27
  end
32
28
 
33
29
  def children_relations
@@ -37,9 +33,449 @@ module SfCli
37
33
  end
38
34
 
39
35
  def parent_relations
40
- schema['fields']
41
- .select{|f| f['relationshipName'].nil? == false && f['referenceTo']&.size > 0}
42
- .map{|f| {name: f['relationshipName'].to_sym, field: f['name'].to_sym, class_name: f['referenceTo'].first.to_sym}}
36
+ fields
37
+ .select{|f| !(f.relationship_name.nil? || f.reference_to.nil?) && f.reference_to.size > 0}
38
+ .map{|f| {name: f.relationship_name.to_sym, field: f.name.to_sym, class_name: f.reference_to.first.to_sym} }
39
+ end
40
+
41
+ def to_h
42
+ schema
43
+ end
44
+
45
+ def compact_layoutable?
46
+ schema["compactLayoutable"]
47
+ end
48
+
49
+ def createable?
50
+ schema["createable"]
51
+ end
52
+
53
+ def custom?
54
+ schema["custom"]
55
+ end
56
+
57
+ def custom_setting?
58
+ schema["customSetting"]
59
+ end
60
+
61
+ def deep_cloneable?
62
+ schema["deepCloneable"]
63
+ end
64
+
65
+ def default_implementation
66
+ schema["defaultImplementation"]
67
+ end
68
+
69
+ def deletable?
70
+ schema["deletable"]
71
+ end
72
+
73
+ def deprecated_and_hidden?
74
+ schema["deprecatedAndHidden"]
75
+ end
76
+
77
+ def extended_by
78
+ schema["extendedBy"]
79
+ end
80
+
81
+ def extends_interfaces
82
+ schema["extendsInterfaces"]
83
+ end
84
+
85
+ def feed_enabled?
86
+ schema["feedEnabled"]
87
+ end
88
+
89
+ def has_subtypes?
90
+ schema["hasSubtypes"]
91
+ end
92
+
93
+ def implemented_by
94
+ schema["implementedBy"]
95
+ end
96
+
97
+ def implements_interfaces
98
+ schema["implementsInterfaces"]
99
+ end
100
+
101
+ def interface?
102
+ schema["isInterface"]
103
+ end
104
+
105
+ def subtype?
106
+ schema["isSubtype"]
107
+ end
108
+
109
+ def key_prefix
110
+ schema["keyPrefix"]
111
+ end
112
+
113
+ def label_plural
114
+ schema["labelPlural"]
115
+ end
116
+
117
+ def layoutable?
118
+ schema["layoutable"]
119
+ end
120
+
121
+ def listviewable?
122
+ schema["listviewable"]
123
+ end
124
+
125
+ def lookup_layoutable
126
+ schema["lookupLayoutable"]
127
+ end
128
+
129
+ def mergeable?
130
+ schema["mergeable"]
131
+ end
132
+
133
+ def mruEnabled
134
+ schema["mruEnabled"]
135
+ end
136
+
137
+ def named_layouts
138
+ schema["namedLayoutInfos"]
139
+ end
140
+
141
+ def network_scope_field_name
142
+ schema["networkScopeFieldName"]
143
+ end
144
+
145
+ def queryable?
146
+ schema["queryable"]
147
+ end
148
+
149
+ def record_types
150
+ schema["recordTypeInfos"]
151
+ end
152
+
153
+ def replicateable?
154
+ schema["replicateable"]
155
+ end
156
+
157
+ def retrieveable?
158
+ schema["retrieveable"]
159
+ end
160
+
161
+ def search_layoutable?
162
+ schema["searchLayoutable"]
163
+ end
164
+
165
+ def searchable?
166
+ schema["searchable"]
167
+ end
168
+
169
+ def sobject_describe_option
170
+ schema["sobjectDescribeOption"]
171
+ end
172
+
173
+ def supported_scopes
174
+ schema["supportedScopes"]
175
+ end
176
+
177
+ def triggerable?
178
+ schema["triggerable"]
179
+ end
180
+
181
+ def undeletable?
182
+ schema["undeletable"]
183
+ end
184
+
185
+ def updateable?
186
+ schema["updateable"]
187
+ end
188
+
189
+ def urls
190
+ schema["urls"]
191
+ end
192
+
193
+ private
194
+
195
+ def schema
196
+ @schema
197
+ end
198
+
199
+ class Fields
200
+ include Enumerable
201
+
202
+ def initialize(schema)
203
+ @fields = schema['fields'].map{|h| Field.new(**h)}
204
+ end
205
+
206
+ def each(&block)
207
+ fields.each &block
208
+ end
209
+
210
+ def to_a
211
+ fields
212
+ end
213
+
214
+ def find_by(name: nil, label: nil)
215
+ return nil if name.nil? && label.nil?
216
+
217
+ attr_name = name.nil? ? :label : :name
218
+ val = name || label
219
+
220
+ find do |field|
221
+ attr_val = field.__send__(attr_name.to_sym)
222
+ attr_val == val
223
+ end
224
+ end
225
+
226
+ def name_and_labels
227
+ map{|field| [field.name, field.label]}
228
+ end
229
+
230
+ private
231
+
232
+ def fields
233
+ @fields
234
+ end
235
+ end
236
+
237
+ class Field
238
+ def initialize(field)
239
+ @field = field
240
+ end
241
+
242
+ def aggregatable?
243
+ field["aggregatable"]
244
+ end
245
+
246
+ def ai_prediction_field?
247
+ field["aiPredictionField"]
248
+ end
249
+
250
+ def autoNumber?
251
+ field["autoNumber"]
252
+ end
253
+
254
+ def byteLength
255
+ field["byteLength"]
256
+ end
257
+
258
+ def calculated?
259
+ field["calculated"]
260
+ end
261
+
262
+ def calculated_formula
263
+ field["calculatedFormula"]
264
+ end
265
+
266
+ def cascade_delete?
267
+ field["cascadeDelete"]
268
+ end
269
+
270
+ def case_sensitive
271
+ field["caseSensitive"]
272
+ end
273
+
274
+ def compound_field_name
275
+ field["compoundFieldName"]
276
+ end
277
+
278
+ def controller_name
279
+ field["controllerName"]
280
+ end
281
+
282
+ def createable?
283
+ field["createable"]
284
+ end
285
+
286
+ def custom?
287
+ field["custom"]
288
+ end
289
+
290
+ def default_value
291
+ field["defaultValue"]
292
+ end
293
+
294
+ def default_value_formula
295
+ field["defaultValueFormula"]
296
+ end
297
+
298
+ def defaulted_on_create?
299
+ field["defaultedOnCreate"]
300
+ end
301
+
302
+ def dependent_picklist?
303
+ field["dependentPicklist"]
304
+ end
305
+
306
+ def deprecated_and_hidden?
307
+ field["deprecatedAndHidden"]
308
+ end
309
+
310
+ def digits
311
+ field["digits"]
312
+ end
313
+
314
+ def display_location_in_decimal?
315
+ field["displayLocationInDecimal"]
316
+ end
317
+
318
+ def encrypted?
319
+ field["encrypted"]
320
+ end
321
+
322
+ def external_id?
323
+ field["externalId"]
324
+ end
325
+
326
+ def extra_type_info
327
+ field["extraTypeInfo"]
328
+ end
329
+
330
+ def filterable?
331
+ field["filterable"]
332
+ end
333
+
334
+ def filtered_lookup_info
335
+ field["filteredLookupInfo"]
336
+ end
337
+
338
+ def formula_treat_null_number_as_zero?
339
+ field["formulaTreatNullNumberAsZero"]
340
+ end
341
+
342
+ def groupable?
343
+ field["groupable"]
344
+ end
345
+
346
+ def high_scale_number?
347
+ field["highScaleNumber"]
348
+ end
349
+
350
+ def html_formatted?
351
+ field["htmlFormatted"]
352
+ end
353
+
354
+ def id_lookup?
355
+ field["idLookup"]
356
+ end
357
+
358
+ def inline_help_text
359
+ field["inlineHelpText"]
360
+ end
361
+
362
+ def label
363
+ field["label"]
364
+ end
365
+
366
+ def length
367
+ field["length"]
368
+ end
369
+
370
+ def mask
371
+ field["mask"]
372
+ end
373
+
374
+ def mask_type
375
+ field["maskType"]
376
+ end
377
+
378
+ def name
379
+ field["name"]
380
+ end
381
+
382
+ def name_field?
383
+ field["nameField"]
384
+ end
385
+
386
+ def name_pointing?
387
+ field["namePointing"]
388
+ end
389
+
390
+ def nillable?
391
+ field["nillable"]
392
+ end
393
+
394
+ def permissionable?
395
+ field["permissionable"]
396
+ end
397
+
398
+ def picklist_values
399
+ field["picklistValues"]
400
+ end
401
+
402
+ def polymorphic_foreign_key?
403
+ field["polymorphicForeignKey"]
404
+ end
405
+
406
+ def precision
407
+ field["precision"]
408
+ end
409
+
410
+ def query_by_distance?
411
+ field["queryByDistance"]
412
+ end
413
+
414
+ def reference_target_field
415
+ field["referenceTargetField"]
416
+ end
417
+
418
+ def reference_to
419
+ field["referenceTo"]
420
+ end
421
+
422
+ def relationship_name
423
+ field["relationshipName"]
424
+ end
425
+
426
+ def relationship_order
427
+ field["relationshipOrder"]
428
+ end
429
+
430
+ def restricted_delete
431
+ field["restrictedDelete"]
432
+ end
433
+
434
+ def restricted_picklist?
435
+ field["restrictedPicklist"]
436
+ end
437
+
438
+ def scale
439
+ field["scale"]
440
+ end
441
+
442
+ def search_prefilterable?
443
+ field["searchPrefilterable"]
444
+ end
445
+
446
+ def soapType
447
+ field["soapType"]
448
+ end
449
+
450
+ def sortable?
451
+ field["sortable"]
452
+ end
453
+
454
+ def type
455
+ field["type"]
456
+ end
457
+
458
+ def unique?
459
+ field["unique"]
460
+ end
461
+
462
+ def updateable?
463
+ field["updateable"]
464
+ end
465
+
466
+ def write_Requires_Master_Read?
467
+ field["writeRequiresMasterRead"]
468
+ end
469
+
470
+ def to_h
471
+ field
472
+ end
473
+
474
+ private
475
+
476
+ def field
477
+ @field
478
+ end
43
479
  end
44
480
  end
45
481
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sf_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takanobu Maekawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-20 00:00:00.000000000 Z
11
+ date: 2024-09-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: This is a class library for introducing Salesforce CLI to Ruby scripting.
14
- Currenty only sf command is the target of development.
13
+ description: A class library for introducing Salesforce CLI to Ruby scripting. Currenty
14
+ only sf command is the target of development.
15
15
  email:
16
16
  executables: []
17
17
  extensions: []
@@ -84,5 +84,5 @@ requirements:
84
84
  rubygems_version: 3.5.11
85
85
  signing_key:
86
86
  specification_version: 4
87
- summary: A library for using Salesforce CLI in Ruby
87
+ summary: A library for Salesforce CLI in Ruby
88
88
  test_files: []