Skip to content

Commit 724ac9d

Browse files
committed
added filter by status
1 parent 339090d commit 724ac9d

File tree

10 files changed

+70
-45
lines changed

10 files changed

+70
-45
lines changed

core/src/main/java/org/sterl/spring/persistent_tasks/history/HistoryService.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,18 +96,15 @@ public long countTriggers(TriggerKey key) {
9696
* @return the found data, looking only the last states
9797
*/
9898
public Page<TriggerHistoryLastStateEntity> findTriggerState(
99-
@Nullable TriggerKey key, Pageable page) {
100-
99+
@Nullable TriggerKey key, @Nullable TriggerStatus status, Pageable page) {
100+
101101
page = applyDefaultSortIfNeeded(page);
102-
if (key == null) return triggerHistoryLastStateRepository.findAll(page);
103-
if (key.getId() == null && key.getTaskName() == null) return triggerHistoryLastStateRepository.findAll(page);
104-
if (key.getId() == null && key.getTaskName() != null) {
105-
return triggerHistoryLastStateRepository.findAll(key.getTaskName(), page);
102+
if (key == null && status == null) {
103+
return triggerHistoryLastStateRepository.findAll(page);
106104
}
107-
return triggerHistoryLastStateRepository.findAll(
108-
key.getId(),
109-
key.getTaskName(),
110-
page);
105+
final var id = key == null ? null : key.getId();
106+
final var name = key == null ? null : key.getTaskName();
107+
return triggerHistoryLastStateRepository.findAll(id, name, status, page);
111108
}
112109

113110
private Pageable applyDefaultSortIfNeeded(Pageable page) {

core/src/main/java/org/sterl/spring/persistent_tasks/history/api/TriggerHistoryResource.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.sterl.spring.persistent_tasks.api.TaskStatusHistoryOverview;
1515
import org.sterl.spring.persistent_tasks.api.Trigger;
1616
import org.sterl.spring.persistent_tasks.api.TriggerKey;
17+
import org.sterl.spring.persistent_tasks.api.TriggerStatus;
1718
import org.sterl.spring.persistent_tasks.history.HistoryService;
1819
import org.sterl.spring.persistent_tasks.history.api.HistoryConverter.FromLastTriggerStateEntity;
1920
import org.sterl.spring.persistent_tasks.history.api.HistoryConverter.FromTriggerStateDetailEntity;
@@ -41,11 +42,11 @@ public List<TaskStatusHistoryOverview> taskStatusHistory() {
4142
public PagedModel<Trigger> list(
4243
@RequestParam(name = "id", required = false) String id,
4344
@RequestParam(name = "taskName", required = false) String taskName,
44-
@PageableDefault(size = 100) Pageable pageable) {
45+
@RequestParam(name = "status", required = false) TriggerStatus status,
46+
@PageableDefault(size = 100) Pageable page) {
4547

48+
var key = new TriggerKey(StringUtils.trimToNull(id), StringUtils.trimToNull(taskName));
4649
return FromLastTriggerStateEntity.INSTANCE.toPage( //
47-
historyService.findTriggerState(
48-
new TriggerKey(StringUtils.trimToNull(id), StringUtils.trimToNull(taskName)),
49-
pageable));
50+
historyService.findTriggerState(key, status, page));
5051
}
5152
}

core/src/main/java/org/sterl/spring/persistent_tasks/shared/repository/TriggerDataRepository.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ public interface TriggerDataRepository<T extends HasTriggerData> extends JpaRepo
2020
SELECT e FROM #{#entityName} e
2121
WHERE (e.data.key.id LIKE :id% OR :id IS NULL)
2222
AND (e.data.key.taskName = :taskName OR :taskName IS NULL)
23+
AND (e.data.status = :status OR :status IS NULL)
2324
""")
2425
Page<T> findAll(@Param("id") String id,
25-
@Param("taskName") String taskName, Pageable page);
26+
@Param("taskName") String taskName,
27+
@Param("status") TriggerStatus status,
28+
Pageable page);
2629

2730
@Query("""
2831
SELECT e FROM #{#entityName} e

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/TriggerService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ public Optional<TriggerEntity> get(TriggerKey triggerKey) {
9494
}
9595

9696
@Transactional(readOnly = true , timeout = 10)
97-
public Page<TriggerEntity> findAllTriggers(TriggerKey key, Pageable page) {
98-
return this.readTrigger.listTriggers(key, page);
97+
public Page<TriggerEntity> findAllTriggers(
98+
@Nullable TriggerKey key, @Nullable TriggerStatus status, Pageable page) {
99+
return this.readTrigger.listTriggers(key, status, page);
99100
}
100101

101102
@Transactional(readOnly = true , timeout = 10)

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/api/TriggerResource.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.springframework.web.bind.annotation.RestController;
1919
import org.sterl.spring.persistent_tasks.api.Trigger;
2020
import org.sterl.spring.persistent_tasks.api.TriggerKey;
21+
import org.sterl.spring.persistent_tasks.api.TriggerStatus;
2122
import org.sterl.spring.persistent_tasks.trigger.TriggerService;
2223
import org.sterl.spring.persistent_tasks.trigger.api.TriggerConverter.FromTriggerEntity;
2324

@@ -39,12 +40,12 @@ public long count() {
3940
public PagedModel<Trigger> list(
4041
@RequestParam(name = "id", required = false) String id,
4142
@RequestParam(name = "taskName", required = false) String taskName,
43+
@RequestParam(name = "status", required = false) TriggerStatus status,
4244
@PageableDefault(size = 100, direction = Direction.ASC, sort = "data.runAt")
4345
Pageable pageable) {
46+
var key = new TriggerKey(StringUtils.trimToNull(id), StringUtils.trimToNull(taskName));
4447
return FromTriggerEntity.INSTANCE.toPage(
45-
triggerService.findAllTriggers(
46-
new TriggerKey(StringUtils.trimToNull(id), StringUtils.trimToNull(taskName)),
47-
pageable));
48+
triggerService.findAllTriggers(key, status, pageable));
4849
}
4950

5051
@PostMapping("triggers/{taskName}/{id}/run-at")

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/component/ReadTriggerComponent.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ public List<TriggerEntity> findTriggersLastPingAfter(OffsetDateTime dateTime) {
5050
return triggerRepository.findTriggersLastPingAfter(dateTime);
5151
}
5252

53-
public Page<TriggerEntity> listTriggers(TriggerKey key, Pageable page) {
54-
if (key == null) return triggerRepository.findAll(page);
55-
if (key.getId() == null) return listTriggers(key.toTaskId(), page);
56-
return triggerRepository.findAll(key.getId(), key.getTaskName(), page);
53+
public Page<TriggerEntity> listTriggers(@Nullable TriggerKey key,
54+
@Nullable TriggerStatus status, Pageable page) {
55+
if (key == null && status == null) return triggerRepository.findAll(page);
56+
final var id = key == null ? null : key.getId();
57+
final var name = key == null ? null : key.getTaskName();
58+
return triggerRepository.findAll(id, name, status, page);
5759
}
5860

5961
public Page<TriggerEntity> listTriggers(TaskId<? extends Serializable> task, Pageable page) {

ui/src/history/history.page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const HistoryPage = () => {
4949
<Col>
5050
<TaskSelect onTaskChange={setTaskName} />
5151
</Col>
52-
<Col className="align-items-center">
52+
<Col>
5353
<PageView
5454
onPage={(p) => setPage(p)}
5555
data={triggers.data}

ui/src/shared/view/page.view.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const PageView: React.FC<PageViewProps> = ({ data, onPage }) => {
3232
: "-";
3333

3434
return (
35-
<Pagination className="mb-0 mt-0 align-items-center">
35+
<Pagination className="mb-0 mt-0 d-felx align-items-center justify-content-center">
3636
<Pagination.Prev
3737
data-testid="prev"
3838
onClick={handlePrevClick}

ui/src/task/view/staus.view.tsx

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,40 @@ import { Badge } from "react-bootstrap";
44
interface Props {
55
status: TriggerStatus;
66
suffix?: string;
7+
pill?: boolean;
78
}
8-
const StatusView = ({ status, suffix }: Props) => {
9-
if (status === "SUCCESS")
10-
return <Badge bg="success">Success{suffix ?? ""}</Badge>;
11-
if (status === "FAILED")
12-
return <Badge bg="danger">Failed{suffix ?? ""}</Badge>;
13-
if (status === "RUNNING") return <Badge>Running{suffix ?? ""}</Badge>;
9+
const StatusView = ({ status, pill = false, suffix }: Props) => {
10+
if (status === "SUCCESS") {
11+
return (
12+
<Badge pill={pill} bg="success">
13+
Success{suffix ?? ""}
14+
</Badge>
15+
);
16+
}
17+
if (status === "FAILED") {
18+
return (
19+
<Badge pill={pill} bg="danger">
20+
Failed{suffix ?? ""}
21+
</Badge>
22+
);
23+
}
24+
if (status === "RUNNING") {
25+
return <Badge pill={pill}>Running{suffix ?? ""}</Badge>;
26+
}
1427
if (status === "WAITING")
15-
return <Badge bg="secondary">Wating{suffix ?? ""}</Badge>;
16-
if (status === "CANCELED")
17-
return <Badge bg="secondary">Canceled{suffix ?? ""}</Badge>;
18-
return <Badge>{status}</Badge>;
28+
return (
29+
<Badge pill={pill} bg="secondary">
30+
Wating{suffix ?? ""}
31+
</Badge>
32+
);
33+
if (status === "CANCELED") {
34+
return (
35+
<Badge pill={pill} bg="secondary">
36+
Canceled{suffix ?? ""}
37+
</Badge>
38+
);
39+
}
40+
return <Badge pill={pill}>{status}</Badge>;
1941
};
2042

2143
export default StatusView;
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Badge } from "react-bootstrap";
22
import { Trigger } from "@src/server-api";
3+
import StatusView from "@src/task/view/staus.view";
34

45
interface Props {
56
data?: Trigger;
@@ -8,18 +9,15 @@ interface Props {
89
const TriggerStatusView = ({ data, pill = false }: Props) => {
910
if (!data) return undefined;
1011

11-
if (data.status === "SUCCESS") return <Badge bg="success">Success</Badge>;
12-
if (data.status === "FAILED") return <Badge bg="danger">Failed</Badge>;
13-
if (data.status === "RUNNING") return <Badge>Running</Badge>;
14-
1512
if (data.executionCount > 0 && data.status === "WAITING") {
16-
return <Badge bg="warning">Retry</Badge>;
13+
return (
14+
<Badge pill={pill} bg="warning">
15+
Retry
16+
</Badge>
17+
);
1718
}
18-
if (data.status === "WAITING") return <Badge bg="secondary">Wating</Badge>;
19-
if (data.status === "CANCELED")
20-
return <Badge bg="secondary">Canceled</Badge>;
2119

22-
return <Badge pill={pill}>{data.status}</Badge>;
20+
return <StatusView status={data.status} pill={pill} />;
2321
};
2422

2523
export default TriggerStatusView;

0 commit comments

Comments
 (0)