Selector Class Template

Use Case: Basic selector class with security enforcement

Template:

/**
 * Selector class for [ObjectName] object
 * Centralized SOQL queries with security enforcement
 */
public with sharing class [ObjectName]Selector {
    
    /**
     * Default field list for [ObjectName] queries
     */
    private static final List<String> DEFAULT_FIELDS = new List<String>{
        'Id', 'Name' // Add other default fields
    };
    
    /**
     * Queries [ObjectName] records by ID
     * @param ids Set of [ObjectName] IDs to query
     * @return List of [ObjectName] records
     */
    public static List<[ObjectName]> selectById(Set<Id> ids) {
        if (ids == null || ids.isEmpty()) {
            return new List<[ObjectName]>();
        }
        
        return [
            SELECT Id, Name // Add other fields
            FROM [ObjectName]
            WHERE Id IN :ids
            WITH SECURITY_ENFORCED
            LIMIT 10000
        ];
    }
    
    /**
     * Queries [ObjectName] records by External ID
     * @param externalIds Set of External ID values
     * @return List of [ObjectName] records
     */
    public static List<[ObjectName]> selectByExternalId(Set<String> externalIds) {
        if (externalIds == null || externalIds.isEmpty()) {
            return new List<[ObjectName]>();
        }
        
        return [
            SELECT Id, Name, ExternalId__c // Add other fields
            FROM [ObjectName]
            WHERE ExternalId__c IN :externalIds
            WITH SECURITY_ENFORCED
            LIMIT 10000
        ];
    }
}

Customization Points:

Related Patterns: