Skip to content

Commit 406c128

Browse files
committed
create flow group service
1 parent 8fc060d commit 406c128

File tree

8 files changed

+99
-37
lines changed

8 files changed

+99
-37
lines changed

core/src/main/java/com/flowci/core/flow/dao/FlowGroupDao.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44
import org.springframework.data.mongodb.repository.MongoRepository;
55
import org.springframework.stereotype.Repository;
66

7+
import java.util.Collection;
8+
import java.util.List;
9+
import java.util.Optional;
10+
711
@Repository
812
public interface FlowGroupDao extends MongoRepository<FlowGroup, String> {
13+
14+
Optional<FlowGroup> findByName(String name);
15+
16+
List<FlowGroup> findAllByIdIn(Collection<String> id);
17+
18+
void deleteByName(String name);
919
}

core/src/main/java/com/flowci/core/flow/dao/FlowItemDao.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

core/src/main/java/com/flowci/core/flow/domain/Flow.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
package com.flowci.core.flow.domain;
1818

1919
import com.fasterxml.jackson.annotation.JsonIgnore;
20+
import com.flowci.core.common.domain.Mongoable;
2021
import com.flowci.core.common.domain.Variables;
2122
import com.flowci.domain.StringVars;
23+
import com.flowci.domain.TypedVars;
2224
import com.flowci.domain.VarValue;
2325
import com.flowci.domain.Vars;
2426
import com.flowci.exception.ArgumentException;
@@ -28,6 +30,7 @@
2830
import lombok.Getter;
2931
import lombok.NoArgsConstructor;
3032
import lombok.Setter;
33+
import org.springframework.data.mongodb.core.index.Indexed;
3134
import org.springframework.data.mongodb.core.mapping.Document;
3235

3336
import java.util.Objects;
@@ -39,7 +42,7 @@
3942
@Setter
4043
@NoArgsConstructor
4144
@Document(collection = "flow")
42-
public final class Flow extends FlowItem implements Pathable {
45+
public final class Flow extends Mongoable implements Pathable {
4346

4447
public static Pathable path(String id) {
4548
Flow flow = new Flow();
@@ -60,6 +63,11 @@ public enum Status {
6063
CONFIRMED
6164
}
6265

66+
@Indexed(name = "index_flow_name")
67+
private String name;
68+
69+
private Vars<VarValue> vars = new TypedVars();
70+
6371
private String groupId;
6472

6573
private Status status = Status.PENDING;
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
package com.flowci.core.flow.domain;
22

33

4+
import com.flowci.core.common.domain.Mongoable;
5+
import com.flowci.domain.TypedVars;
6+
import com.flowci.domain.VarValue;
7+
import com.flowci.domain.Vars;
48
import lombok.Getter;
59
import lombok.Setter;
10+
import org.springframework.data.mongodb.core.index.Indexed;
611
import org.springframework.data.mongodb.core.mapping.Document;
712

813
@Setter
914
@Getter
1015
@Document(collection = "flow_group")
11-
public class FlowGroup extends FlowItem {
16+
public class FlowGroup extends Mongoable {
1217

18+
@Indexed(name = "index_group_name")
19+
protected String name;
20+
21+
protected Vars<VarValue> vars = new TypedVars();
1322
}

core/src/main/java/com/flowci/core/flow/domain/FlowItem.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.flowci.core.flow.service;
2+
3+
import com.flowci.core.flow.domain.FlowGroup;
4+
5+
import java.util.Collection;
6+
import java.util.List;
7+
8+
public interface FlowGroupService {
9+
10+
FlowGroup get(String name);
11+
12+
List<FlowGroup> list(Collection<String> ids);
13+
14+
FlowGroup create(String name);
15+
16+
void delete(String name);
17+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.flowci.core.flow.service;
2+
3+
import com.flowci.core.flow.dao.FlowGroupDao;
4+
import com.flowci.core.flow.domain.FlowGroup;
5+
import com.flowci.exception.DuplicateException;
6+
import com.flowci.exception.NotFoundException;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.dao.DuplicateKeyException;
9+
import org.springframework.stereotype.Service;
10+
11+
import java.util.Collection;
12+
import java.util.List;
13+
import java.util.Optional;
14+
15+
@Service
16+
public class FlowGroupServiceImpl implements FlowGroupService {
17+
18+
private final FlowGroupDao flowGroupDao;
19+
20+
public FlowGroupServiceImpl(FlowGroupDao flowGroupDao) {
21+
this.flowGroupDao = flowGroupDao;
22+
}
23+
24+
@Override
25+
public FlowGroup get(String name) {
26+
Optional<FlowGroup> optional = flowGroupDao.findByName(name);
27+
if (optional.isEmpty()) {
28+
throw new NotFoundException("Group {0} not found", name);
29+
}
30+
return optional.get();
31+
}
32+
33+
@Override
34+
public List<FlowGroup> list(Collection<String> ids) {
35+
return flowGroupDao.findAllByIdIn(ids);
36+
}
37+
38+
@Override
39+
public FlowGroup create(String name) {
40+
try {
41+
var group = new FlowGroup();
42+
group.setName(name);
43+
return flowGroupDao.save(group);
44+
} catch (DuplicateKeyException e) {
45+
throw new DuplicateException("Group {0} already exists", name);
46+
}
47+
}
48+
49+
@Override
50+
public void delete(String name) {
51+
flowGroupDao.deleteByName(name);
52+
}
53+
}

core/src/main/java/com/flowci/core/flow/service/FlowServiceImpl.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,6 @@ public Flow create(String name, String groupId) {
161161
Flow.validateName(name);
162162
String email = sessionManager.getUserEmail();
163163

164-
if (exist(name)) {
165-
throw new DuplicateException("Flow {0} already exists", name);
166-
}
167-
168164
if (groupId != null) {
169165
if (!flowGroupDao.existsById(groupId)) {
170166
throw new NotFoundException("The group id {0} not found", groupId);

0 commit comments

Comments
 (0)