/** * @description Service class for {SObject} business logic. * Follows separation of concerns: delegates queries to {SObject}Selector * and SObject manipulation to {SObject}Domain where applicable. * @author Generated by Apex Class Writer Skill */ public with sharing class {SObject}Service { // ─── Constants ─────────────────────────────────────────────────────── private static final String ERROR_NULL_INPUT = 'Input cannot be null or empty.'; // ─── Public API ────────────────────────────────────────────────────── /** * @description {Describe the primary operation} * @param recordIds Set of {SObject} Ids to process * @return List of processed {SObject} records * @throws {SObject}ServiceException if processing fails * @example * Set ids = new Set{ '001xx000003DGbY' }; * List<{SObject}> results = {SObject}Service.process{SObject}s(ids); */ public static List<{SObject}> process{SObject}s(Set recordIds) { // Guard clause if (recordIds == null || recordIds.isEmpty()) { throw new {SObject}ServiceException(ERROR_NULL_INPUT); } // Query via Selector List<{SObject}> records = {SObject}Selector.selectByIds(recordIds); // Apply business logic // TODO: Implement business logic here // DML try { update records; } catch (DmlException e) { throw new {SObject}ServiceException( 'Failed to update {SObject} records: ' + e.getMessage() ); } return records; } // ─── Convenience Overloads ─────────────────────────────────────────── /** * @description Single-record convenience overload * @param recordId The {SObject} Id to process * @return The processed {SObject} record */ public static {SObject} process{SObject}(Id recordId) { List<{SObject}> results = process{SObject}s(new Set{ recordId }); return results.isEmpty() ? null : results[0]; } // ─── Private Helpers ───────────────────────────────────────────────── // TODO: Add private helper methods as needed // ─── Exception ─────────────────────────────────────────────────────── /** * @description Custom exception for {SObject}Service errors */ public class {SObject}ServiceException extends Exception {} }