sf_cli 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []