Interface JpaPermissionRequestRepository

All Superinterfaces:
AtPermissionRequestRepository, org.springframework.data.repository.PagingAndSortingRepository<EdaPermissionRequest,Long>, PermissionRequestRepository<AtPermissionRequest>, org.springframework.data.repository.Repository<EdaPermissionRequest,Long>

@Repository @Transactional(readOnly=true) public interface JpaPermissionRequestRepository extends org.springframework.data.repository.PagingAndSortingRepository<EdaPermissionRequest,Long>, AtPermissionRequestRepository
  • Method Details

    • findByPermissionId

      Optional<AtPermissionRequest> findByPermissionId(String permissionId)
      Description copied from interface: PermissionRequestRepository
      Finds a permission request by its permission id. If there is no permission request, it returns an empty optional.
      Specified by:
      findByPermissionId in interface PermissionRequestRepository<AtPermissionRequest>
      Parameters:
      permissionId - the id of the permission request.
      Returns:
      an optional that contains the permission request if it exists.
    • findByOriginalConversationIdOrCMRequestId

      @Query(value="WITH original_requests AS (\n SELECT DISTINCT ON (permission_id) permission_id, conversation_id, cm_request_id\n FROM at_eda.permission_event\n WHERE dtype = \'ValidatedEvent\'\n ORDER BY permission_id, id DESC\n)\nSELECT request.permission_id, request.connection_id,\n original.cm_request_id, original.conversation_id,\n request.created, request.data_need_id, request.dso_id, request.granularity,\n request.metering_point_id, request.permission_start, request.permission_end,\n request.cm_consent_id AS consent_id, request.message, request.status, request.cause,\n request.energy_direction, request.participation_factor\nFROM at_eda.eda_permission_request request\nJOIN original_requests original USING (permission_id)\nWHERE original.conversation_id = :conversationId OR original.cm_request_id = :cmRequestId\nORDER BY request.permission_id\n", nativeQuery=true) List<AtPermissionRequestProjection> findByOriginalConversationIdOrCMRequestId(@Param("conversationId") String conversationId, @Param("cmRequestId") @Nullable String cmRequestId)
      Description copied from interface: AtPermissionRequestRepository
      Finds the consent request context recorded by validation, retaining the current permission status and consent. Unlike the current conversation, the consent request conversation is not replaced by a termination conversation.
      Specified by:
      findByOriginalConversationIdOrCMRequestId in interface AtPermissionRequestRepository
    • findByConversationIdOrCMRequestId

      @Query(value="SELECT request.*, request.cm_consent_id AS consent_id\nFROM at_eda.eda_permission_request request\nWHERE request.permission_id IN (\n SELECT permission_id FROM at_eda.permission_event\n WHERE conversation_id = :conversationId OR cm_request_id = :cmRequestId\n)\nORDER BY request.permission_id\n", nativeQuery=true) List<AtPermissionRequestProjection> findByConversationIdOrCMRequestId(@Param("conversationId") String conversationId, @Param("cmRequestId") @Nullable String cmRequestId)
      Description copied from interface: AtPermissionRequestRepository
      Finds permission requests by either conversation id or CMRequest id. Might return multiple as receiving permission for multiple metering points create new permission request that share the conversation and CMRequest id.
      Specified by:
      findByConversationIdOrCMRequestId in interface AtPermissionRequestRepository
      Parameters:
      conversationId - the conversation id of the request.
      cmRequestId - the request id of the original CM Request.
      Returns:
      a List, which is empty if there is no matching permission request.
    • findByConversationIdAndMeteringPointId

      @Query("SELECT pr FROM EdaPermissionRequest pr WHERE pr.conversationId = :conversationId AND pr.meteringPointId = :meteringPointId") Optional<AtPermissionRequest> findByConversationIdAndMeteringPointId(@Param("conversationId") String conversationId, @Param("meteringPointId") @Nullable String meteringPointId)
      Description copied from interface: AtPermissionRequestRepository
      Finds a permission request by its conversation id and metering point id.
      Specified by:
      findByConversationIdAndMeteringPointId in interface AtPermissionRequestRepository
      Parameters:
      conversationId - the conversation id of the request.
      meteringPointId - the metering point id of the request.
      Returns:
      an optional, which is empty if there is no matching permission request.
    • findAcceptedAndFulfilledByMeteringPointIdAndDate

      @Query(value="SELECT request.*, request.cm_consent_id AS consent_id\nFROM at_eda.eda_permission_request request\nWHERE request.metering_point_id = :meteringPointId\n AND request.permission_start <= :date\n AND (request.permission_end >= :date OR request.permission_end IS NULL)\n AND request.status IN (\'ACCEPTED\', \'FULFILLED\')\n", nativeQuery=true) List<AtPermissionRequestProjection> findAcceptedAndFulfilledByMeteringPointIdAndDate(@Param("meteringPointId") String meteringPointId, @Param("date") LocalDate date)
      Description copied from interface: AtPermissionRequestRepository
      This method returns all PermissionProcessStatus.ACCEPTED and PermissionProcessStatus.FULFILLED permission requests that are associated with the given metering point and where the date is between start and end of the permission request
      Specified by:
      findAcceptedAndFulfilledByMeteringPointIdAndDate in interface AtPermissionRequestRepository
      Parameters:
      meteringPointId - for which to get permission requests
      date - to filter time relevant permission requests
      Returns:
      a list of matching permission requests
    • findByConsentId

      @Query(value="SELECT request.*, request.cm_consent_id AS consent_id\nFROM at_eda.eda_permission_request request\nWHERE request.cm_consent_id = :consentId\n", nativeQuery=true) Optional<AtPermissionRequestProjection> findByConsentId(@Param("consentId") String consentId)
      Specified by:
      findByConsentId in interface AtPermissionRequestRepository
    • findByStatusIn

      Specified by:
      findByStatusIn in interface AtPermissionRequestRepository
    • findByMeteringPointIdAndDateAndStateSentToPAOrAfterAccepted

      @Query(value="SELECT request.*, request.cm_consent_id AS consent_id\nFROM at_eda.eda_permission_request request\nWHERE request.metering_point_id = :meteringPointId\n AND request.permission_start <= :date\n AND (request.permission_end >= :date OR request.permission_end IS NULL)\n AND request.status IN (\'ACCEPTED\', \'FULFILLED\', \'SENT_TO_PERMISSION_ADMINISTRATOR\')\n", nativeQuery=true) List<AtPermissionRequestProjection> findByMeteringPointIdAndDateAndStateSentToPAOrAfterAccepted(String meteringPointId, LocalDate date)