package com.sequenceiq.cloudbreak.repository;
import java.util.List;
import java.util.Set;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import com.sequenceiq.cloudbreak.domain.FlowLog;
@EntityType(entityClass = FlowLog.class)
public interface FlowLogRepository extends CrudRepository<FlowLog, Long> {
FlowLog findFirstByFlowIdOrderByCreatedDesc(String flowId);
@Query("SELECT DISTINCT fl.flowId FROM FlowLog fl "
+ "WHERE (fl.finalized IS NULL OR fl.finalized = false) AND fl.stackId = :stackId "
+ "AND fl.flowType != 'com.sequenceiq.cloudbreak.core.flow2.stack.termination.StackTerminationFlowConfig'")
Set<String> findAllRunningNonTerminationFlowIdsByStackId(@Param("stackId") Long stackId);
@Query("SELECT DISTINCT fl.flowId, fl.stackId FROM FlowLog fl WHERE fl.finalized IS NULL OR fl.finalized = false")
List<Object[]> findAllNonFinalized();
@Modifying
@Query("UPDATE FlowLog fl SET fl.finalized = true WHERE fl.flowId = :flowId")
void finalizeByFlowId(@Param("flowId") String flowId);
}