DomainTemplateDeleteSelectedService.java

package fr.tiogars.inception.domains.domaintemplate.services;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import fr.tiogars.inception.common.models.DeleteSelectedResponse;
import fr.tiogars.inception.common.services.DeleteSelectedSupport;

/**
 * Soft-deletes a selection of DomainTemplates in a single transaction.
 *
 * @since 0.1.0
 */
@Service
public class DomainTemplateDeleteSelectedService {

    private final DomainTemplateDeleteService deleteService;

    /**
     * Creates the bulk deletion service.
     *
     * @param deleteService single DomainTemplate deletion service
     */
    public DomainTemplateDeleteSelectedService(DomainTemplateDeleteService deleteService) {
        this.deleteService = deleteService;
    }

    /**
     * Soft-deletes the selected DomainTemplates.
     *
     * @param ids selected DomainTemplate identifiers
     * @return deleted and skipped identifiers
     */
    @Transactional
    public DeleteSelectedResponse deleteSelected(List<Long> ids) {
        return DeleteSelectedSupport.deleteEach(ids, deleteService::delete);
    }
}