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.
- checksums.yaml +4 -4
- data/README.rdoc +2 -2
- data/lib/sf_cli/console/commands.rb +17 -1
- data/lib/sf_cli/sf/apex/run.rb +22 -35
- data/lib/sf_cli/sf/core/base.rb +7 -0
- data/lib/sf_cli/sf/data/create_record.rb +3 -1
- data/lib/sf_cli/sf/data/delete_bulk.rb +25 -8
- data/lib/sf_cli/sf/data/delete_record.rb +3 -1
- data/lib/sf_cli/sf/data/delete_resume.rb +10 -8
- data/lib/sf_cli/sf/data/query.rb +11 -7
- data/lib/sf_cli/sf/data/resume.rb +5 -3
- data/lib/sf_cli/sf/data/search.rb +6 -4
- data/lib/sf_cli/sf/data/update_record.rb +8 -6
- data/lib/sf_cli/sf/data/upsert_bulk.rb +27 -10
- data/lib/sf_cli/sf/data/upsert_resume.rb +8 -6
- data/lib/sf_cli/sf/model/query_condition.rb +114 -61
- data/lib/sf_cli/sf/model/query_methods.rb +29 -4
- data/lib/sf_cli/sf/model/sf_command_connection.rb +4 -4
- data/lib/sf_cli/sf/org/display.rb +3 -2
- data/lib/sf_cli/sf/sobject/describe.rb +7 -5
- data/lib/sf_cli/sf/sobject/list.rb +5 -3
- data/lib/sf_cli/sf/sobject/schema.rb +452 -16
- metadata +5 -5
@@ -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
|
-
|
10
|
+
schema['name']
|
17
11
|
end
|
18
12
|
|
19
13
|
def label
|
20
|
-
|
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 ||=
|
22
|
+
@field_names ||= fields.map{|f| f.name.to_sym}
|
25
23
|
end
|
26
24
|
|
27
|
-
def
|
28
|
-
@
|
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
|
-
|
41
|
-
.select{|f| f
|
42
|
-
.map{|f| {name: f
|
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.
|
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-
|
11
|
+
date: 2024-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
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
|
87
|
+
summary: A library for Salesforce CLI in Ruby
|
88
88
|
test_files: []
|