Skip to content

Commit 1bd4308

Browse files
authored
Summer '20 Updates
- Converted metadata to SFDX format - Upgraded to API v49.0 - Simplified naming convention used for classes
1 parent 2d90db7 commit 1bd4308

25 files changed

+261
-209
lines changed

.forceignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status
2+
# More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm
3+
#
4+
5+
package.xml
6+
7+
# LWC configuration files
8+
**/jsconfig.json
9+
**/.eslintrc.json
10+
11+
# LWC Jest
12+
**/__tests__/**

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Folders to exclude
2+
.settings/
3+
.sfdx/
4+
.vscode/
5+
*/main/default/
6+
7+
# Files to exclude
8+
*.log
9+

.travis.yml

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
1-
language: node_js
2-
node_js:
3-
- "7"
4-
install:
5-
- npm install -g jsforce-metadata-tools
1+
sudo: true
2+
os: trusty
3+
cache: false
4+
5+
env:
6+
- URL=https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz
7+
8+
before_install:
9+
#- openssl aes-256-cbc -K $encrypted_b1fbf710b918_key -iv $encrypted_b1fbf710b918_iv
10+
# -in assets/server.key.enc -out assets/server.key -d
11+
- export SFDX_AUTOUPDATE_DISABLE=false
12+
- export SFDX_USE_GENERIC_UNIX_KEYCHAIN=true
13+
- export SFDX_DOMAIN_RETRY=300
14+
- export SFDX_DISABLE_APP_HUB=true
15+
- export SFDX_LOG_LEVEL=DEBUG
16+
- mkdir sfdx
17+
- wget -qO- $URL | tar xJ -C sfdx --strip-components 1
18+
- "./sfdx/install"
19+
- export PATH=./sfdx/$(pwd):$PATH
20+
- sfdx --version
21+
- sfdx plugins --core
22+
- echo $SFDX_URL > sfdx_url_file
23+
- sfdx force:auth:sfdxurl:store --sfdxurlfile sfdx_url_file --setalias nebula_ci
24+
625
script:
7-
- jsforce-deploy --checkOnly -u $DEPLOYMENT_USERNAME -p $DEPLOYMENT_PASSWORD$DEPLOYMENT_TOKEN -D $TRAVIS_BUILD_DIR/src -l $DEPLOYMENT_LOGIN_URL --rollbackOnError true --testLevel $DEPLOYMENT_TEST_LEVEL --pollTimeout $POLL_TIMEOUT --pollInterval $POLL_INTERVAL--verbose
26+
- sfdx force:config:set apiVersion=49.0
27+
- sfdx force:source:deploy --checkonly --manifest ./manifest/package.xml --testlevel RunLocalTests --targetusername nebula_ci --verbose

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ A dynamic SOQL query & SOSL search library for for Salesforce Apex<br /><br />
2121
## Overview
2222
There are 3 main builder classes
2323

24-
&nbsp; | SObjectQueryBuilder | AggregateQueryBuilder | SearchBuilder
24+
&nbsp; | Query | AggregateQuery | RecordSearch
2525
------- | --------------------|-----------------------|--------------
2626
Super Class | Soql.cls (Queries) | Soql.cls (Queries) | Sosl.cls (Searches) | -
2727
Action | Queries an SObject | Queries an SObject | Searches 1 or more SObjects
@@ -31,13 +31,13 @@ Returns | `SObject` or `List<SObject>` | `AggregateResult` or `List<AggregateRes
3131
**Basic Usage:** Query an object & return the object's ID and display name field (typically the 'Name' field, but some objects use other fields, like Task.Subject and Case.CaseNumber). Since no filters have been added, this query would also return all accounts.
3232

3333
```
34-
List<Account> accounts = new SObjectQueryBuilder(Schema.Account.SObjectType).getResults();
34+
List<Account> accounts = new Query(Schema.Account.SObjectType).getResults();
3535
```
3636

3737
**Advanced Usage:** Query an object & leverage the query builder methods. The order of the builder methods does not matter - you can arrange the calls to these methods in any order that you prefer.
3838

3939
```
40-
SObjectQueryBuilder accountQuery = new SObjectQueryBuilder(Schema.Account.SObjectType) // Query the account object
40+
Query accountQuery = new Query(Schema.Account.SObjectType) // Query the account object
4141
.addField(Schema.Account.ParentId) // Include the ParentId field, using SObjectField. The current user must have at least read access to the field
4242
.addField(Schema.Account.Type, Soql.FieldCategory.UPDATEABLE) // Include the Type field if the current user has access to update it
4343
.addFields(Soql.FieldCategory.CUSTOM) // Include all custom fields - only fields that are accessible to the user are included
@@ -74,9 +74,9 @@ System.debug(accountQuery.getQuery());
7474
**Basic Usage:** Search a single object
7575

7676
```
77-
SObjectQueryBuilder userQuery = new SObjectQueryBuilder(Schema.User.SObjectType); // Create an instance of SObjectQueryBuilder for an SObject - you can include additional fields, filters, etc
78-
SearchBuilder userSearch = new SearchBuilder('my search term', userQuery); // Create a new SearchBuilder instance with a search term & instance of SObjectQueryBuilder
79-
List<User> userSearchResults = userSearch.getFirstResults(); // SearchBuilder returns a list of lists of sobjects - getFirstResults() returns the first list
77+
Query userQuery = new Query(Schema.User.SObjectType); // Create an instance of Query for an SObject - you can include additional fields, filters, etc
78+
RecordSearch userSearch = new RecordSearch('my search term', userQuery); // Create a new RecordSearch instance with a search term & instance of Query
79+
List<User> userSearchResults = userSearch.getFirstResults(); // RecordSearch returns a list of lists of sobjects - getFirstResults() returns the first list
8080
8181
/****** Resulting output *******
8282
FIND 'my search term' IN ALL FIELDS RETURNING User(Id, Name)
@@ -88,12 +88,12 @@ System.debug(userSearch.getSearch());
8888
**Advanced Usage:** Search several objects
8989

9090
```
91-
SObjectQueryBuilder accountQuery = new SObjectQueryBuilder(Schema.Account.SObjectType); // Create an instance of SObjectQueryBuilder for the Account object
92-
SObjectQueryBuilder contactQuery = new SObjectQueryBuilder(Schema.Contact.SObjectType); // Create an instance of SObjectQueryBuilder for the Contact object
93-
SObjectQueryBuilder leadQuery = new SObjectQueryBuilder(Schema.Lead.SObjectType); // Create an instance of SObjectQueryBuilder for the Lead object
94-
List<SObjectQueryBuilder> queries = new List<SObjectQueryBuilder>{contactQuery, accountQuery, leadQuery}; // Add the SObjectQueryBuilder queries to a list
91+
Query accountQuery = new Query(Schema.Account.SObjectType); // Create an instance of Query for the Account object
92+
Query contactQuery = new Query(Schema.Contact.SObjectType); // Create an instance of Query for the Contact object
93+
Query leadQuery = new Query(Schema.Lead.SObjectType); // Create an instance of Query for the Lead object
94+
List<Query> queries = new List<Query>{contactQuery, accountQuery, leadQuery}; // Add the Query queries to a list
9595
96-
SearchBuilder mySearch = new SearchBuilder('my search term', queries); // Create a new SearchBuilder instance with a search term & the list of SObjectQueryBuilder queries
96+
RecordSearch mySearch = new RecordSearch('my search term', queries); // Create a new RecordSearch instance with a search term & the list of Query queries
9797
List<List<SObject>> searchResults = mySearch.getResults(); // Returns all search results
9898
9999
/****** Resulting output *******

manifest/package.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>NebulaQueryAndSearch</fullName>
4+
<types>
5+
<members>AggregateQuery</members>
6+
<members>AggregateQuery_Tests</members>
7+
<members>Query</members>
8+
<members>Query_Tests</members>
9+
<members>RecordSearch</members>
10+
<members>RecordSearch_Tests</members>
11+
<members>Soql</members>
12+
<members>Sosl</members>
13+
<name>ApexClass</name>
14+
</types>
15+
<version>49.0</version>
16+
</Package>

src/classes/AggregateQueryBuilder.cls renamed to nebula-app-framework/main/query-and-search/classes/AggregateQuery.cls

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,162 +2,162 @@
22
* This file is part of the Nebula Query & Search project, released under the MIT License. *
33
* See LICENSE file or go to https://github.com/jongpie/NebulaQueryAndSearch for full license details. *
44
******************************************************************************************************/
5-
public class AggregateQueryBuilder extends Soql {
5+
public class AggregateQuery extends Soql {
66

77
private Soql.GroupingDimension groupingDimension;
88
private List<AggregateField> aggregateFields;
99
private List<String> havingConditions;
1010

11-
public AggregateQueryBuilder(Schema.SObjectType sobjectType) {
11+
public AggregateQuery(Schema.SObjectType sobjectType) {
1212
super(sobjectType, false);
1313

1414
this.aggregateFields = new List<AggregateField>();
1515
this.havingConditions = new List<String>();
1616
}
1717

18-
public AggregateQueryBuilder groupByField(Schema.SObjectField field) {
18+
public AggregateQuery groupByField(Schema.SObjectField field) {
1919
return this.groupByFields(new List<Schema.SObjectField>{field});
2020
}
2121

22-
public AggregateQueryBuilder groupByField(Soql.QueryField queryField) {
22+
public AggregateQuery groupByField(Soql.QueryField queryField) {
2323
return this.groupByFields(new List<Soql.QueryField>{queryField});
2424
}
2525

26-
public AggregateQueryBuilder groupByFields(List<Schema.SObjectField> fields) {
26+
public AggregateQuery groupByFields(List<Schema.SObjectField> fields) {
2727
List<Soql.QueryField> queryFields = new List<Soql.QueryField>();
2828
for(Schema.SObjectField field : fields) {
2929
queryFields.add(new Soql.QueryField(field));
3030
}
3131
return this.groupByFields(queryFields);
3232
}
3333

34-
public AggregateQueryBuilder groupByFields(List<Soql.QueryField> queryFields) {
34+
public AggregateQuery groupByFields(List<Soql.QueryField> queryFields) {
3535
super.doAddFields(queryFields, null);
3636
return this.setHasChanged();
3737
}
3838

39-
public AggregateQueryBuilder groupByFieldSet(Schema.FieldSet fieldSet) {
39+
public AggregateQuery groupByFieldSet(Schema.FieldSet fieldSet) {
4040
List<Soql.QueryField> queryFields = new List<Soql.QueryField>();
4141
for(Schema.FieldSetMember fieldSetMember : fieldSet.getFields()) {
4242
queryFields.add(new Soql.QueryField(this.sobjectType, fieldSetMember.getFieldPath()));
4343
}
4444
return this.groupByFields(queryFields);
4545
}
4646

47-
public AggregateQueryBuilder usingGroupingDimension(Soql.GroupingDimension groupingDimension) {
47+
public AggregateQuery usingGroupingDimension(Soql.GroupingDimension groupingDimension) {
4848
this.groupingDimension = groupingDimension;
4949
return this.setHasChanged();
5050
}
5151

52-
public AggregateQueryBuilder addAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field) {
52+
public AggregateQuery addAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field) {
5353
return this.addAggregate(aggregateFunction, field, null);
5454
}
5555

56-
public AggregateQueryBuilder addAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, String fieldAlias) {
56+
public AggregateQuery addAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, String fieldAlias) {
5757
return this.addAggregate(aggregateFunction, new Soql.QueryField(field), fieldAlias);
5858
}
5959

60-
public AggregateQueryBuilder addAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField) {
60+
public AggregateQuery addAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField) {
6161
return this.addAggregate(aggregateFunction, queryField, null);
6262
}
6363

64-
public AggregateQueryBuilder addAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, String fieldAlias) {
64+
public AggregateQuery addAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, String fieldAlias) {
6565
this.aggregateFields.add(new AggregateField(this.getSObjectType(), aggregateFunction, queryField, fieldAlias));
6666
return this.setHasChanged();
6767
}
6868

69-
public AggregateQueryBuilder havingAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.Operator operator, Object value) {
69+
public AggregateQuery havingAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.Operator operator, Object value) {
7070
return this.havingAggregate(aggregateFunction, new Soql.QueryField(field), operator, value);
7171
}
7272

73-
public AggregateQueryBuilder havingAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.Operator operator, Object value) {
73+
public AggregateQuery havingAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.Operator operator, Object value) {
7474
this.havingConditions.add(aggregateFunction.name() + '(' + queryField + ') ' + Soql.getOperatorValue(operator) + ' ' + value);
7575
return this.setHasChanged();
7676
}
7777

78-
public AggregateQueryBuilder filterWhere(Schema.SObjectField field, Soql.Operator operator, Object value) {
78+
public AggregateQuery filterWhere(Schema.SObjectField field, Soql.Operator operator, Object value) {
7979
return this.filterWhere(new Soql.QueryField(field), operator, value);
8080
}
8181

82-
public AggregateQueryBuilder filterWhere(Soql.QueryField queryField, Soql.Operator operator, Object value) {
82+
public AggregateQuery filterWhere(Soql.QueryField queryField, Soql.Operator operator, Object value) {
8383
return this.filterWhere(new Soql.QueryFilter(queryField, operator, value));
8484
}
8585

86-
public AggregateQueryBuilder filterWhere(Soql.QueryFilter filter) {
86+
public AggregateQuery filterWhere(Soql.QueryFilter filter) {
8787
return this.filterWhere(new List<Soql.QueryFilter>{filter});
8888
}
8989

90-
public AggregateQueryBuilder filterWhere(List<Soql.QueryFilter> filters) {
90+
public AggregateQuery filterWhere(List<Soql.QueryFilter> filters) {
9191
super.doFilterWhere(filters);
9292
return this.setHasChanged();
9393
}
9494

95-
public AggregateQueryBuilder orFilterWhere(List<Soql.QueryFilter> filters) {
95+
public AggregateQuery orFilterWhere(List<Soql.QueryFilter> filters) {
9696
super.doOrFilterWhere(filters);
9797
return this.setHasChanged();
9898
}
9999

100-
public AggregateQueryBuilder orderByField(Schema.SObjectField field) {
100+
public AggregateQuery orderByField(Schema.SObjectField field) {
101101
return this.orderByField(field, null);
102102
}
103103

104-
public AggregateQueryBuilder orderByField(Soql.QueryField queryField) {
104+
public AggregateQuery orderByField(Soql.QueryField queryField) {
105105
return this.orderByField(queryField, null);
106106
}
107107

108-
public AggregateQueryBuilder orderByField(Schema.SObjectField field, Soql.SortOrder sortOrder) {
108+
public AggregateQuery orderByField(Schema.SObjectField field, Soql.SortOrder sortOrder) {
109109
return this.orderByField(field, sortOrder, null);
110110
}
111111

112-
public AggregateQueryBuilder orderByField(Soql.QueryField queryField, Soql.SortOrder sortOrder) {
112+
public AggregateQuery orderByField(Soql.QueryField queryField, Soql.SortOrder sortOrder) {
113113
return this.orderByField(queryField, sortOrder, null);
114114
}
115115

116-
public AggregateQueryBuilder orderByField(Schema.SObjectField field, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
116+
public AggregateQuery orderByField(Schema.SObjectField field, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
117117
return this.orderByField(new Soql.QueryField(field), sortOrder, sortNullsFirst);
118118
}
119119

120-
public AggregateQueryBuilder orderByField(Soql.QueryField queryField, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
120+
public AggregateQuery orderByField(Soql.QueryField queryField, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
121121
super.doOrderBy(queryField, sortOrder, sortNullsFirst);
122122
return this.setHasChanged();
123123
}
124124

125-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field) {
125+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field) {
126126
return this.orderByAggregate(aggregateFunction, field, null);
127127
}
128128

129-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.SortOrder sortOrder) {
129+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.SortOrder sortOrder) {
130130
return this.orderByAggregate(aggregateFunction, field, sortOrder, null);
131131
}
132132

133-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
133+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Schema.SObjectField field, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
134134
return this.orderByAggregate(aggregateFunction, new Soql.QueryField(field), sortOrder, sortNullsFirst);
135135
}
136136

137-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField) {
137+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField) {
138138
return this.orderByAggregate(aggregateFunction, queryField, null);
139139
}
140140

141-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.SortOrder sortOrder) {
141+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.SortOrder sortOrder) {
142142
return this.orderByAggregate(aggregateFunction, queryField, sortOrder, null);
143143
}
144144

145-
public AggregateQueryBuilder orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
145+
public AggregateQuery orderByAggregate(Soql.Aggregate aggregateFunction, Soql.QueryField queryField, Soql.SortOrder sortOrder, Boolean sortNullsFirst) {
146146
super.doOrderBy(aggregateFunction.name() + '(' + queryField + ')', sortOrder, sortNullsFirst);
147147
return this.setHasChanged();
148148
}
149149

150-
public AggregateQueryBuilder limitTo(Integer numberOfRecords) {
150+
public AggregateQuery limitTo(Integer numberOfRecords) {
151151
super.doLimitTo(numberOfRecords);
152152
return this.setHasChanged();
153153
}
154154

155-
public AggregateQueryBuilder offsetBy(Integer offset) {
155+
public AggregateQuery offsetBy(Integer offset) {
156156
super.doOffsetBy(offset);
157157
return this.setHasChanged();
158158
}
159159

160-
public AggregateQueryBuilder cacheResults() {
160+
public AggregateQuery cacheResults() {
161161
super.doCacheResults();
162162
return this;
163163
}
@@ -210,7 +210,7 @@ public class AggregateQueryBuilder extends Soql {
210210
return (List<AggregateResult>)super.doGetResults();
211211
}
212212

213-
private AggregateQueryBuilder setHasChanged() {
213+
private AggregateQuery setHasChanged() {
214214
this.hasChanged = true;
215215
return this;
216216
}
@@ -219,7 +219,7 @@ public class AggregateQueryBuilder extends Soql {
219219
if(this.aggregateFields.isEmpty()) return '';
220220

221221
List<String> aggregateFieldStrings = new List<String>();
222-
for(AggregateQueryBuilder.AggregateField aggregatedField : this.aggregateFields) {
222+
for(AggregateQuery.AggregateField aggregatedField : this.aggregateFields) {
223223
aggregateFieldStrings.add(aggregatedField.toString());
224224
}
225225
aggregateFieldStrings.sort();

src/classes/SObjectQueryBuilder.cls-meta.xml renamed to nebula-app-framework/main/query-and-search/classes/AggregateQuery.cls-meta.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3-
<apiVersion>46.0</apiVersion>
3+
<apiVersion>49.0</apiVersion>
44
<status>Active</status>
55
</ApexClass>

0 commit comments

Comments
 (0)