Interface ServerMetricsRepository

All Superinterfaces:
org.springframework.data.repository.CrudRepository<ServerMetricsEntity,Long>, org.springframework.data.jpa.repository.JpaRepository<ServerMetricsEntity,Long>, org.springframework.data.jpa.repository.JpaSpecificationExecutor<ServerMetricsEntity>, org.springframework.data.repository.ListCrudRepository<ServerMetricsEntity,Long>, org.springframework.data.repository.ListPagingAndSortingRepository<ServerMetricsEntity,Long>, org.springframework.data.repository.PagingAndSortingRepository<ServerMetricsEntity,Long>, org.springframework.data.repository.query.QueryByExampleExecutor<ServerMetricsEntity>, org.springframework.data.repository.Repository<ServerMetricsEntity,Long>

public interface ServerMetricsRepository extends org.springframework.data.jpa.repository.JpaRepository<ServerMetricsEntity,Long>, org.springframework.data.jpa.repository.JpaSpecificationExecutor<ServerMetricsEntity>
Repository for ServerMetricsEntity Provides database operations for server metrics historical data Note: Only super administrators can access server monitoring data
  • Method Details

    • findByUid

      Find metrics by UID
      Parameters:
      uid - metrics UID
      Returns:
      Optional<ServerMetricsEntity&amp;gt;
    • findByServerUidAndDeletedFalseOrderByTimestampDesc

      List<ServerMetricsEntity> findByServerUidAndDeletedFalseOrderByTimestampDesc(String serverUid)
      Find metrics by server UID
      Parameters:
      serverUid - server UID
      Returns:
      List<ServerMetricsEntity>
    • findByServerUidAndTimeRange

      @Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime ORDER BY m.timestamp ASC") List<ServerMetricsEntity> findByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime)
      Find metrics by server UID and time range
      Parameters:
      serverUid - server UID
      startTime - start time
      endTime - end time
      Returns:
      List<ServerMetricsEntity>
    • findLatestMetricsByServerUid

      @Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid ORDER BY m.timestamp DESC") List<ServerMetricsEntity> findLatestMetricsByServerUid(@Param("serverUid") String serverUid)
      Find latest metrics for a server
      Parameters:
      serverUid - server UID
      Returns:
      ServerMetricsEntity or null
    • findMetricsWithHighUsage

      @Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.timestamp BETWEEN :startTime AND :endTime AND (m.cpuUsage >= :cpuThreshold OR m.memoryUsage >= :memoryThreshold OR m.diskUsage >= :diskThreshold) ORDER BY m.timestamp DESC") List<ServerMetricsEntity> findMetricsWithHighUsage(@Param("cpuThreshold") Double cpuThreshold, @Param("memoryThreshold") Double memoryThreshold, @Param("diskThreshold") Double diskThreshold, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime)
      Find metrics with high resource usage
      Parameters:
      cpuThreshold - CPU usage threshold
      memoryThreshold - memory usage threshold
      diskThreshold - disk usage threshold
      startTime - start time
      endTime - end time
      Returns:
      List<ServerMetricsEntity>
    • findAverageMetricsByServerUidAndTimeRange

      @Query("SELECT AVG(m.cpuUsage), AVG(m.memoryUsage), AVG(m.diskUsage), AVG(m.usedMemoryMb), AVG(m.usedDiskGb) FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime") Object[] findAverageMetricsByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime)
      Find average metrics for a server in a time range
      Parameters:
      serverUid - server UID
      startTime - start time
      endTime - end time
      Returns:
      Object array with average values
    • findPeakMetricsByServerUidAndTimeRange

      @Query("SELECT MAX(m.cpuUsage), MAX(m.memoryUsage), MAX(m.diskUsage), MAX(m.usedMemoryMb), MAX(m.usedDiskGb) FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime") Object[] findPeakMetricsByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime)
      Find peak metrics for a server in a time range
      Parameters:
      serverUid - server UID
      startTime - start time
      endTime - end time
      Returns:
      Object array with peak values
    • deleteOldMetrics

      @Query("DELETE FROM ServerMetricsEntity m WHERE m.deleted = false AND m.timestamp < :cutoffTime") int deleteOldMetrics(@Param("cutoffTime") ZonedDateTime cutoffTime)
      Delete old metrics data (for data retention)
      Parameters:
      cutoffTime - cutoff time
      Returns:
      number of deleted records
    • countByServerUidAndDeletedFalse

      long countByServerUidAndDeletedFalse(String serverUid)
      Count metrics records for a server
      Parameters:
      serverUid - server UID
      Returns:
      count