Skip to content

Commit b53bbaa

Browse files
authored
Merge pull request #38 from prgrms-web-devcourse-final-project/node/4
[REFACTOR]: 소유자 검증 & 분기점에서 새로운 결정 분기 라인 생성 & 헤더 추가
2 parents 4a44ca5 + 2f08747 commit b53bbaa

29 files changed

+643
-91
lines changed

back/src/main/java/com/back/domain/node/controller/BaseLineController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
package com.back.domain.node.controller;
88

99
import com.back.domain.node.dto.*;
10+
import com.back.domain.node.dto.base.BaseLineBulkCreateRequest;
11+
import com.back.domain.node.dto.base.BaseLineBulkCreateResponse;
12+
import com.back.domain.node.dto.base.BaseNodeDto;
1013
import com.back.domain.node.service.NodeService;
1114
import lombok.RequiredArgsConstructor;
1215
import org.springframework.http.HttpStatus;

back/src/main/java/com/back/domain/node/controller/DecisionFlowController.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
*/
88
package com.back.domain.node.controller;
99

10-
import com.back.domain.node.dto.DecLineDto;
11-
import com.back.domain.node.dto.DecisionLineLifecycleDto;
12-
import com.back.domain.node.dto.DecisionNodeFromBaseRequest;
13-
import com.back.domain.node.dto.DecisionNodeNextRequest;
10+
import com.back.domain.node.dto.decision.*;
1411
import com.back.domain.node.service.NodeService;
1512
import lombok.RequiredArgsConstructor;
16-
import org.springframework.http.*;
13+
import org.springframework.http.HttpStatus;
14+
import org.springframework.http.ResponseEntity;
1715
import org.springframework.web.bind.annotation.*;
1816

1917
@RestController
@@ -25,13 +23,13 @@ public class DecisionFlowController {
2523

2624
// from-base: 라인+피벗(순번/나이)+분기슬롯 인덱스만 받아 서버가 pivotBaseNodeId를 해석
2725
@PostMapping("/from-base")
28-
public ResponseEntity<DecLineDto> createFromBase(@RequestBody DecisionNodeFromBaseRequest request) {
26+
public ResponseEntity<DecNodeDto> createFromBase(@RequestBody DecisionNodeFromBaseRequest request) {
2927
return ResponseEntity.status(HttpStatus.CREATED).body(nodeService.createDecisionNodeFromBase(request));
3028
}
3129

3230
// next: 부모 결정 id만 받아 서버가 라인/다음 나이/베이스 매칭을 해석
3331
@PostMapping("/next")
34-
public ResponseEntity<DecLineDto> createNext(@RequestBody DecisionNodeNextRequest request) {
32+
public ResponseEntity<DecNodeDto> createNext(@RequestBody DecisionNodeNextRequest request) {
3533
return ResponseEntity.status(HttpStatus.CREATED).body(nodeService.createDecisionNodeNext(request));
3634
}
3735

@@ -46,4 +44,10 @@ public ResponseEntity<DecisionLineLifecycleDto> cancel(@PathVariable Long decisi
4644
public ResponseEntity<DecisionLineLifecycleDto> complete(@PathVariable Long decisionLineId) {
4745
return ResponseEntity.ok(nodeService.completeDecisionLine(decisionLineId));
4846
}
47+
48+
// 분기점까지의 라인 복제(포크) 및 새로운 라인 생성
49+
@PostMapping("/fork")
50+
public ResponseEntity<DecNodeDto> fork(@RequestBody ForkFromDecisionRequest request) {
51+
return ResponseEntity.status(HttpStatus.CREATED).body(nodeService.forkFromDecision(request));
52+
}
4953
}

back/src/main/java/com/back/domain/node/controller/DecisionLineController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
*/
66
package com.back.domain.node.controller;
77

8-
import com.back.domain.node.dto.DecisionLineDetailDto;
9-
import com.back.domain.node.dto.DecisionLineListDto;
8+
import com.back.domain.node.dto.decision.DecisionLineDetailDto;
9+
import com.back.domain.node.dto.decision.DecisionLineListDto;
1010
import com.back.domain.node.service.NodeQueryService;
1111
import lombok.RequiredArgsConstructor;
1212
import org.springframework.http.ResponseEntity;

back/src/main/java/com/back/domain/node/dto/PivotListDto.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public record PivotDto(
1616
Long baseNodeId,
1717
NodeCategory category,
1818
String situation,
19-
Integer ageYear
19+
Integer ageYear,
20+
String description
2021
) {}
2122
}

back/src/main/java/com/back/domain/node/dto/TreeDto.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
*/
88
package com.back.domain.node.dto;
99

10+
import com.back.domain.node.dto.base.BaseNodeDto;
11+
import com.back.domain.node.dto.decision.DecNodeDto;
12+
1013
import java.util.List;
1114

1215
public record TreeDto(
1316
List<BaseNodeDto> baseNodes,
14-
List<DecLineDto> decisionNodes
17+
List<DecNodeDto> decisionNodes
1518
) {}

back/src/main/java/com/back/domain/node/dto/BaseLineBulkCreateRequest.java renamed to back/src/main/java/com/back/domain/node/dto/base/BaseLineBulkCreateRequest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* [DTO-REQ] BaseLine을 라인 단위로 일괄 생성 요청(헤더~꼬리까지)
33
* - nodes: 0=헤더, 마지막=꼬리, 사이가 피벗(분기점)
44
*/
5-
package com.back.domain.node.dto;
5+
package com.back.domain.node.dto.base;
66

77
import com.back.domain.node.entity.NodeCategory;
88
import java.util.List;
@@ -16,6 +16,7 @@ public record BaseNodePayload(
1616
NodeCategory category,
1717
String situation,
1818
String decision,
19-
Integer ageYear
19+
Integer ageYear,
20+
String description
2021
) {}
2122
}

back/src/main/java/com/back/domain/node/dto/BaseLineBulkCreateResponse.java renamed to back/src/main/java/com/back/domain/node/dto/base/BaseLineBulkCreateResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* [DTO-RES] BaseLine 일괄 생성 응답
33
* - 생성된 BaseLine id와 각 노드의 id/인덱스 반환
44
*/
5-
package com.back.domain.node.dto;
5+
package com.back.domain.node.dto.base;
66

77
import java.util.List;
88

back/src/main/java/com/back/domain/node/dto/BaseNodeCreateRequestDto.java renamed to back/src/main/java/com/back/domain/node/dto/base/BaseNodeCreateRequestDto.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* [DTO-REQ] BaseNode 단건 생성 요청
33
* - nodeKind는 BASE 권장
44
*/
5-
package com.back.domain.node.dto;
5+
package com.back.domain.node.dto.base;
66

77
import com.back.domain.node.entity.NodeCategory;
88
import com.back.domain.node.entity.NodeType;
@@ -11,5 +11,6 @@ public record BaseNodeCreateRequestDto(
1111
NodeType nodeKind,
1212
NodeCategory category,
1313
String situation,
14-
Integer ageYear
14+
Integer ageYear,
15+
String description
1516
) {}

back/src/main/java/com/back/domain/node/dto/BaseNodeDto.java renamed to back/src/main/java/com/back/domain/node/dto/base/BaseNodeDto.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* [DTO-RES] BaseNode 응답
33
* - 고정 선택과 분기 2칸 및 각 타겟 링크를 포함한다
44
*/
5-
package com.back.domain.node.dto;
5+
package com.back.domain.node.dto.base;
66

77
import com.back.domain.node.entity.NodeCategory;
88

@@ -21,5 +21,6 @@ public record BaseNodeDto(
2121
String altOpt1,
2222
String altOpt2,
2323
Long altOpt1TargetDecisionId,
24-
Long altOpt2TargetDecisionId
24+
Long altOpt2TargetDecisionId,
25+
String description
2526
) {}

back/src/main/java/com/back/domain/node/dto/DecLineDto.java renamed to back/src/main/java/com/back/domain/node/dto/decision/DecNodeDto.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
* [DTO-RES] DecisionNode 응답
33
* - options/selectedIndex/parentOptionIndex를 포함해 프론트 렌더 정보를 제공한다
44
*/
5-
package com.back.domain.node.dto;
5+
package com.back.domain.node.dto.decision;
66

77
import com.back.domain.node.entity.NodeCategory;
88
import java.util.List;
99

10-
public record DecLineDto(
10+
public record DecNodeDto(
1111
Long id,
1212
Long userId,
1313
String type,
@@ -21,5 +21,6 @@ public record DecLineDto(
2121
String background,
2222
List<String> options,
2323
Integer selectedIndex,
24-
Integer parentOptionIndex
24+
Integer parentOptionIndex,
25+
String description
2526
) {}

0 commit comments

Comments
 (0)