Skip to content

Commit 7796c88

Browse files
authored
release/v3.2.0 (#96)
* toLabel (#95) * toLabel * toLabel documentation * format method (#100) * format method * FORMAT Test * format doucmentation * Fix SOQL Test * Btc 191 aggregated functions for related [IN PROGRESS (#101) * aggregate functions for related * aggregate functions for related * Test for aggregate related * SOQL Test * related aggregate functions documentation * documentation update * documentation * documentation
1 parent 58c9375 commit 7796c88

File tree

3 files changed

+716
-103
lines changed

3 files changed

+716
-103
lines changed

force-app/main/default/classes/SOQL.cls

Lines changed: 142 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,36 @@ public virtual inherited sharing class SOQL implements Queryable {
6565
Queryable count();
6666
Queryable count(SObjectField field);
6767
Queryable count(SObjectField field, String alias);
68+
Queryable count(String relationshipName, SObjectField field);
69+
Queryable count(String relationshipName, SObjectField field, String alias);
6870
Queryable avg(SObjectField field);
6971
Queryable avg(SObjectField field, String alias);
72+
Queryable avg(String relationshipName, SObjectField field);
73+
Queryable avg(String relationshipName, SObjectField field, String alias);
7074
Queryable countDistinct(SObjectField field);
7175
Queryable countDistinct(SObjectField field, String alias);
76+
Queryable countDistinct(String relationshipName, SObjectField field);
77+
Queryable countDistinct(String relationshipName, SObjectField field, String alias);
7278
Queryable min(SObjectField field);
7379
Queryable min(SObjectField field, String alias);
80+
Queryable min(String relationshipName, SObjectField field);
81+
Queryable min(String relationshipName, SObjectField field, String alias);
7482
Queryable max(SObjectField field);
7583
Queryable max(SObjectField field, String alias);
84+
Queryable max(String relationshipName, SObjectField field);
85+
Queryable max(String relationshipName, SObjectField field, String alias);
7686
Queryable sum(SObjectField field);
7787
Queryable sum(SObjectField field, String alias);
88+
Queryable sum(String relationshipName, SObjectField field);
89+
Queryable sum(String relationshipName, SObjectField field, String alias);
7890
// SELECT - GROUPING
7991
Queryable grouping(SObjectField field, String alias);
92+
// SELECT - toLabel
93+
Queryable toLabel(SObjectField field);
94+
Queryable toLabel(String field);
95+
// SELECT - FORMAT
96+
Queryable format(SObjectField field);
97+
Queryable format(SObjectField field, String alias);
8098
// USING SCOPE
8199
Queryable delegatedScope();
82100
Queryable mineScope();
@@ -363,6 +381,15 @@ public virtual inherited sharing class SOQL implements Queryable {
363381
return this;
364382
}
365383

384+
public SOQL count(String relationshipName, SObjectField field) {
385+
return count(relationshipName, field, '');
386+
}
387+
388+
public SOQL count(String relationshipName, SObjectField field, String alias) {
389+
builder.fields.count(relationshipName, field, alias);
390+
return this;
391+
}
392+
366393
public SOQL avg(SObjectField field) {
367394
return avg(field, '');
368395
}
@@ -372,6 +399,15 @@ public virtual inherited sharing class SOQL implements Queryable {
372399
return this;
373400
}
374401

402+
public SOQL avg(String relationshipName, SObjectField field) {
403+
return avg(relationshipName, field, '');
404+
}
405+
406+
public SOQL avg(String relationshipName, SObjectField field, String alias) {
407+
builder.fields.avg(relationshipName, field, alias);
408+
return this;
409+
}
410+
375411
public SOQL countDistinct(SObjectField field) {
376412
return countDistinct(field, '');
377413
}
@@ -381,6 +417,15 @@ public virtual inherited sharing class SOQL implements Queryable {
381417
return this;
382418
}
383419

420+
public SOQL countDistinct(String relationshipName, SObjectField field) {
421+
return countDistinct(relationshipName, field, '');
422+
}
423+
424+
public SOQL countDistinct(String relationshipName, SObjectField field, String alias) {
425+
builder.fields.countDistinct(relationshipName, field, alias);
426+
return this;
427+
}
428+
384429
public SOQL min(SObjectField field) {
385430
return min(field, '');
386431
}
@@ -390,6 +435,15 @@ public virtual inherited sharing class SOQL implements Queryable {
390435
return this;
391436
}
392437

438+
public SOQL min(String relationshipName, SObjectField field) {
439+
return min(relationshipName, field, '');
440+
}
441+
442+
public SOQL min(String relationshipName, SObjectField field, String alias) {
443+
builder.fields.min(relationshipName, field, alias);
444+
return this;
445+
}
446+
393447
public SOQL max(SObjectField field) {
394448
return max(field, '');
395449
}
@@ -399,6 +453,15 @@ public virtual inherited sharing class SOQL implements Queryable {
399453
return this;
400454
}
401455

456+
public SOQL max(String relationshipName, SObjectField field) {
457+
return max(relationshipName ,field, '');
458+
}
459+
460+
public SOQL max(String relationshipName, SObjectField field, String alias) {
461+
builder.fields.max(relationshipName, field, alias);
462+
return this;
463+
}
464+
402465
public SOQL sum(SObjectField field) {
403466
return sum(field, '');
404467
}
@@ -408,11 +471,38 @@ public virtual inherited sharing class SOQL implements Queryable {
408471
return this;
409472
}
410473

474+
public SOQL sum(String relationshipName, SObjectField field) {
475+
return sum(relationshipName, field, '');
476+
}
477+
478+
public SOQL sum(String relationshipName, SObjectField field, String alias) {
479+
builder.fields.sum(relationshipName, field, alias);
480+
return this;
481+
}
482+
411483
public SOQL grouping(SObjectField field, String alias) {
412484
builder.fields.grouping(field, alias);
413485
return this;
414486
}
415487

488+
public SOQL toLabel(SObjectField field) {
489+
return toLabel(field.getDescribe().getName());
490+
}
491+
492+
public SOQL toLabel(String field) {
493+
builder.fields.toLabel(field);
494+
return this;
495+
}
496+
497+
public SOQL format(SObjectField field) {
498+
return format(field, '');
499+
}
500+
501+
public SOQL format(SObjectField field, String alias) {
502+
builder.fields.format(field, alias);
503+
return this;
504+
}
505+
416506
public SOQL delegatedScope() {
417507
builder.scope.delegated();
418508
return this;
@@ -795,31 +885,63 @@ public virtual inherited sharing class SOQL implements Queryable {
795885
}
796886

797887
public void count(SObjectField field, String alias) {
798-
withAggregateFunction('COUNT(' + field + ')', alias);
888+
with('COUNT', field, alias);
889+
}
890+
891+
public void count(String relationshipName, SObjectField field, String alias) {
892+
with('COUNT', relationshipName, field, alias);
893+
}
894+
895+
public void avg(SObjectField field, String alias) {
896+
with('AVG', field, alias);
897+
}
898+
899+
public void avg(String relationshipName, SObjectField field, String alias) {
900+
with('AVG', relationshipName, field, alias);
901+
}
902+
903+
public void countDistinct(SObjectField field, String alias) {
904+
with('COUNT_DISTINCT', field, alias);
905+
}
906+
907+
public void countDistinct(String relationshipName, SObjectField field, String alias) {
908+
with('COUNT_DISTINCT', relationshipName, field, alias);
909+
}
910+
911+
public void min(SObjectField field, String alias) {
912+
with('MIN', field, alias);
799913
}
800914

801-
private void avg(SObjectField field, String alias) {
802-
withAggregateFunction('AVG(' + field + ')', alias);
915+
public void min(String relationshipName, SObjectField field, String alias) {
916+
with('MIN', relationshipName, field, alias);
803917
}
804918

805-
private void countDistinct(SObjectField field, String alias) {
806-
withAggregateFunction('COUNT_DISTINCT(' + field + ')', alias);
919+
public void max(SObjectField field, String alias) {
920+
with('MAX', field, alias);
807921
}
808922

809-
private void min(SObjectField field, String alias) {
810-
withAggregateFunction('MIN(' + field + ')', alias);
923+
public void max(String relationshipName, SObjectField field, String alias) {
924+
with('MAX', relationshipName, field, alias);
811925
}
812926

813-
private void max(SObjectField field, String alias) {
814-
withAggregateFunction('MAX(' + field + ')', alias);
927+
public void sum(SObjectField field, String alias) {
928+
with('SUM', field, alias);
815929
}
816930

817-
private void sum(SObjectField field, String alias) {
818-
withAggregateFunction('SUM(' + field + ')', alias);
931+
public void sum(String relationshipName, SObjectField field, String alias) {
932+
with('SUM', relationshipName, field, alias);
819933
}
820934

821935
public void grouping(SObjectField field, String alias) {
822-
withAggregateFunction('GROUPING(' + field + ')', alias);
936+
with('GROUPING', field, alias);
937+
}
938+
939+
public void with(String function, String relationshipName, SObjectField field, String alias) {
940+
withAggregateFunction(function + '(' + relationshipName + '.' + field + ')', alias);
941+
}
942+
943+
public void with(String function, SObjectField field, String alias) {
944+
withAggregateFunction(function + '(' + field + ')', alias);
823945
}
824946

825947
public void with(SObjectField field, String alias) {
@@ -865,6 +987,14 @@ public virtual inherited sharing class SOQL implements Queryable {
865987
fields.add(field.getDescribe().getName());
866988
}
867989

990+
public void toLabel(String field) {
991+
fields.add('toLabel(' + field + ')');
992+
}
993+
994+
private void format(SObjectField field, String alias) {
995+
fields.add('FORMAT(' + field + ') ' + alias);
996+
}
997+
868998
public void with(String relationshipPath, List<SObjectField> fields) {
869999
for (SObjectField field : fields) {
8701000
with(relationshipPath, field);

0 commit comments

Comments
 (0)