Add job name input suggestion API for page history status
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobStatusTraceLogRepository.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobStatusTraceLogRepository.java
index 378968d..e8165c9 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobStatusTraceLogRepository.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/dao/search/JobStatusTraceLogRepository.java
@@ -20,6 +20,20 @@
import org.apache.shardingsphere.elasticjob.lite.ui.domain.JobStatusTraceLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
public interface JobStatusTraceLogRepository extends JpaRepository<JobStatusTraceLog, String>, JpaSpecificationExecutor<JobStatusTraceLog> {
+
+ /**
+ * Find all job names in job status trace log with specific prefix.
+ *
+ * @param prefix job name prefix
+ * @return matched job names
+ */
+ @SuppressWarnings("SpringDataRepositoryMethodReturnTypeInspection")
+ @Query("select distinct l.jobName from JobStatusTraceLog l where l.jobName like :prefix%")
+ List<String> findJobNameByJobNameLike(@Param("prefix") String prefix);
}
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobStatusTraceLog.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobStatusTraceLog.java
index 6f804b1..d0e62f3 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobStatusTraceLog.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/domain/JobStatusTraceLog.java
@@ -23,10 +23,12 @@
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Table;
import java.util.Date;
@Data
-@Entity(name = "JOB_STATUS_TRACE_LOG")
+@Table(name = "JOB_STATUS_TRACE_LOG")
+@Entity
public class JobStatusTraceLog {
@Id
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
index 2630de8..c880079 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/EventTraceHistoryService.java
@@ -61,4 +61,12 @@
* @return job status trace events
*/
Page<JobStatusTraceEvent> findJobStatusTraceEvents(FindJobStatusTraceEventsRequest findJobStatusTraceEventsRequest);
+
+ /**
+ * Find job names with specific prefix in status trace log.
+ *
+ * @param jobNamePrefix job name prefix
+ * @return matched job names
+ */
+ List<String> findJobNamesInStatusTraceLog(String jobNamePrefix);
}
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
index 5c3c234..db55b9d 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/service/impl/EventTraceHistoryServiceImpl.java
@@ -91,6 +91,11 @@
return new PageImpl<>(page.getContent().stream().map(JobStatusTraceLog::toJobStatusTraceEvent).collect(Collectors.toList()), null, page.getTotalElements());
}
+ @Override
+ public List<String> findJobNamesInStatusTraceLog(final String jobNamePrefix) {
+ return jobStatusTraceLogRepository.findJobNameByJobNameLike(jobNamePrefix);
+ }
+
private <T> Pageable getPageable(final BasePageRequest pageRequest, final Class<T> clazz) {
int page = 0;
int perPage = BasePageRequest.DEFAULT_PAGE_SIZE;
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
index 19e5de8..d40c200 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-backend/src/main/java/org/apache/shardingsphere/elasticjob/lite/ui/web/controller/EventTraceHistoryController.java
@@ -98,6 +98,17 @@
return ResponseResultUtil.build(BasePageResponse.of(jobStatusTraceEvents));
}
+ /**
+ * Find all job names with specific prefix in status trace log.
+ *
+ * @param jobNamePrefix job name prefix
+ * @return matched job names
+ */
+ @GetMapping(value = {"/status/jobNames", "/status/jobNames/{jobNamePrefix}"})
+ public ResponseResult<List<String>> findJobNamesByPrefixInStatusTraceLog(@PathVariable(required = false) final String jobNamePrefix) {
+ return ResponseResultUtil.build(eventTraceHistoryService.findJobNamesInStatusTraceLog(Optional.ofNullable(jobNamePrefix).orElse("")));
+ }
+
@ModelAttribute
private void initDataSource() {
eventTraceDataSourceConfigurationService.loadActivated().ifPresent(SessionEventTraceDataSourceConfiguration::setDataSourceConfiguration);