Skip to content

Commit f5f180e

Browse files
committed
get flow with the latest build status
1 parent d095f2f commit f5f180e

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.flowci.flow.model;
2+
3+
import com.flowci.build.model.Build;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.Id;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
10+
@Data
11+
@Entity
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
public class FlowWithBuildStatus {
15+
16+
@Id
17+
private Long id;
18+
19+
private String name;
20+
21+
private Build.Status lastBuildStatus;
22+
}

src/main/java/com/flowci/flow/repo/FlowRepo.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.flowci.flow.repo;
22

33
import com.flowci.flow.model.Flow;
4+
import com.flowci.flow.model.FlowWithBuildStatus;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.data.jpa.repository.Query;
67
import org.springframework.stereotype.Repository;
@@ -18,4 +19,10 @@ public interface FlowRepo extends JpaRepository<Flow, Long> {
1819
"and f.parentId = ?1 " +
1920
"order by f.createdAt")
2021
List<Flow> findAllByParentIdAndUserIdOrderByCreatedAt(Long parentId, Long userId);
22+
23+
@Query("select new FlowWithBuildStatus(f.id, f.name, b.status) " +
24+
"from Flow f " +
25+
"inner join Build b on f.id = b.flowId " +
26+
"where f.id = ?1")
27+
FlowWithBuildStatus findFlowWithBuildStatusByUserId(Long flowId);
2128
}

src/main/resources/db/migration/V1__Init.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ BEGIN
7171

7272
SELECT COALESCE(MAX(build_sequence) + 1, 1)
7373
INTO NEW.build_sequence
74-
FROM "build"
74+
FROM "builds"
7575
WHERE flow_id = NEW.flow_id
7676
AND build_date = NEW.build_date;
7777

src/test/java/com/flowci/flow/repo/FlowRepoTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.flowci.flow.repo;
22

33
import com.flowci.SpringTestWithDB;
4+
import com.flowci.build.model.Build;
5+
import com.flowci.build.repo.BuildRepo;
46
import com.flowci.flow.model.Flow;
57
import com.flowci.flow.model.FlowUser;
68
import org.instancio.InstancioApi;
@@ -20,6 +22,9 @@ class FlowRepoTest extends SpringTestWithDB {
2022
@Autowired
2123
private FlowUserRepo flowUserRepo;
2224

25+
@Autowired
26+
private BuildRepo buildRepo;
27+
2328
@Test
2429
void givenFlow_whenSaving_thenIdAndTimestampCreated() {
2530
var flow = mockFlow().create();
@@ -70,6 +75,23 @@ void whenFindFlowsByParentIdAndUserId_thenReturnListOfFlows() {
7075
assertEquals(1, flowsForUser2.size());
7176
}
7277

78+
@Test
79+
void whenFindFlowWithBuildStatus_thenReturn() {
80+
var flow = mockFlow().create();
81+
flowRepo.save(flow);
82+
83+
var build = newDummyInstance(Build.class)
84+
.ignore(field(Build::getId))
85+
.set(field(Build::getFlowId), flow.getId())
86+
.set(field(Build::getStatus), Build.Status.QUEUED)
87+
.create();
88+
buildRepo.save(build);
89+
90+
var entity = flowRepo.findFlowWithBuildStatusByUserId(flow.getId());
91+
assertNotNull(entity);
92+
assertEquals(Build.Status.QUEUED, entity.getLastBuildStatus());
93+
}
94+
7395
private InstancioApi<Flow> mockFlow() {
7496
return newDummyInstance(Flow.class).ignore(field(Flow::getId));
7597
}

0 commit comments

Comments
 (0)