/apex-fp

Functional programming for Salesforce Apex

Primary LanguageApexMIT LicenseMIT

Apex FP

CI workflow codecov

Apex FP provides functional constructs for SObject collections!

Examples

Transform SObjects with a simple declarative API.

List<Opportunity> largeOpportunities = SObjectCollection.of(opportunities)
	.filter(Fn.Match
		.field(Opportunity.Amount).greaterThan(150000)
		.also(Opportunity.AccountId).equals(accountId))
	.asList();
List<Task> prospectingTasks = SObjectCollection.of(Trigger.new)
	.filter(Fn.Match.recordFields(new Opportunity(Stage = 'Prospecting')))
	.mapAll(Fn.MapTo(Task.SObjectType)
		.setField(Task.Subject, 'Follow up')
		.mapField(Task.WhatId, Opportunity.Id))
	.asList();
Map<Id, List<Account>> accountsByParentId = SObjectCollection.of(accounts).groupByIds(Account.ParentId);
Decimal averageOpportunityValue = SObjectCollection.of(opportunities).mapToDecimal(Opportunity.Amount).average();

Find more examples in the documentation.

Deploy to Salesforce

Deploy to Salesforce

Read the documentation

Apex FP documentation