The SOQL Lib provides functional constructs for SOQL queries in Apex.
npx skills add https://github.com/beyond-the-cloud-dev/soql-lib --skill soql-lib-query-builderInstall this skill with the CLI and start using the SKILL.md workflow in your workspace.
The SOQL Lib provides functional constructs for SOQL queries in Apex.
SOQL Lib is part of Apex Fluently, a suite of production-ready Salesforce libraries by Beyond the Cloud.
Standard SOQL
// SELECT Id FROM Account
List<Account> accounts = SOQL.of(Account.SObjectType).toList();
// SELECT Id, Name, Industry FROM Account
List<Account> accounts = SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name, Account.Industry)
.toList();
Cached SOQL
// SELECT Id, Name, UserType FROM Profile WHERE Name = 'System Administrator'
Profile systemAdminProfile = (Profile) SOQLCache.of(Profile.SObjectType)
.with(Profile.Id, Profile.Name, Profile.UserType)
.whereEqual(Profile.Name, 'System Administrator')
.toObject();
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 with sharing class ExampleController {
@AuraEnabled
public static List<Contact> getAccountContacts(Id accountId) {
return SOQL_Contact.query()
.byRecordType('Partner')
.byAccountId(accountId)
.with(Contact.Email)
.toList();
}
}
public with sharing class SOQL_ProfileCache extends SOQLCache implements SOQLCache.Selector {
public static SOQL_ProfileCache query() {
return new SOQL_ProfileCache();
}
private SOQL_ProfileCache() {
super(Profile.SObjectType);
cacheInOrgCache();
with(Profile.Id, Profile.Name, Profile.UserType);
}
public override SOQL.Queryable initialQuery() {
return SOQL.of(Profile.SObjectType);
}
public SOQL_ProfileCache byName(String name) {
whereEqual(Profile.Name, name);
return this;
}
}
Visit the documentation to view the full documentation.
Read about the features in the basic features.