Skip to main content

Getting Started

The main module of the SOQL Lib consists of two concepts: SOQL Builder and SOQL Selectors.

SOQL Builder

Our library does NOT force developers to create selectors. Queries can be built directly via fluent API provided by the lib.

// SELECT Id FROM Account WITH USER_MODE
List<Account> accounts = SOQL.of(Account.SObjectType).toList();
// SELECT Id, Name, Industry FROM Account WITH USER_MODE
List<Account> accounts = SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name, Account.Industry)
.toList();

However, we recommend building a selector per SObjectType.

Selectors allow you to set default SOQL settings for a given SObjectType and keep all reusable conditions in one place. Check how to build a selector in the Build Your Selector section.

SOQL_Contact.cls
public inherited sharing class SOQL_Contact extends SOQL implements SOQL.Selector {
public static SOQL_Contact query() {
return new SOQL_Contact();
}

private SOQL_Contact() {
super(Contact.SObjectType);
// default settings
with(Contact.Id, Contact.Name, Contact.AccountId);
systemMode();
withoutSharing();
}

public SOQL_Contact byAccountId(Id accountId) {
whereAre(Filter.with(Contact.AccountId).equal(accountId));
return this;
}

public SOQL_Contact bySource(String source) {
whereAre(Filter.with(Contact.ContactSource).equal(source));
return this;
}
}
Selector Usage
List<Contact> contacts = SOQL_Contact.query()
.byAccountId(...)
.bySource('Web')
.with(Contact.Email)
.toList();