-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' of https://github.com/depromeet/15th-team1-BE …
…into feat/LS-6
- Loading branch information
Showing
21 changed files
with
454 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
layer-api/src/main/java/org/layer/config/ObjectMapperConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package org.layer.config; | ||
|
||
import com.fasterxml.jackson.databind.DeserializationFeature; | ||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.fasterxml.jackson.databind.PropertyNamingStrategies; | ||
import com.fasterxml.jackson.databind.SerializationFeature; | ||
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; | ||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
|
||
@Configuration | ||
public class ObjectMapperConfig { | ||
|
||
@Bean | ||
public ObjectMapper objectMapper(){ | ||
ObjectMapper objectMapper = new ObjectMapper(); | ||
objectMapper.registerModule(new Jdk8Module()); | ||
objectMapper.registerModule(new JavaTimeModule()); | ||
|
||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); | ||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); | ||
|
||
// 카멜 케이스 | ||
objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.LowerCamelCaseStrategy()); | ||
return objectMapper; | ||
|
||
} | ||
} |
65 changes: 65 additions & 0 deletions
65
layer-api/src/main/java/org/layer/filter/LoggerFilter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
package org.layer.filter; | ||
|
||
import jakarta.servlet.*; | ||
import jakarta.servlet.http.HttpServletRequest; | ||
import jakarta.servlet.http.HttpServletResponse; | ||
import lombok.extern.slf4j.Slf4j; | ||
import org.springframework.stereotype.Component; | ||
import org.springframework.web.util.ContentCachingRequestWrapper; | ||
import org.springframework.web.util.ContentCachingResponseWrapper; | ||
|
||
import java.io.IOException; | ||
|
||
@Component | ||
@Slf4j | ||
public class LoggerFilter implements Filter { | ||
|
||
@Override | ||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | ||
var req = new ContentCachingRequestWrapper((HttpServletRequest) request); | ||
var res = new ContentCachingResponseWrapper((HttpServletResponse) response); | ||
|
||
chain.doFilter(req,res); | ||
|
||
// request 정보 | ||
var headerNames = req.getHeaderNames(); | ||
var headerValues = new StringBuilder(); | ||
|
||
headerNames.asIterator().forEachRemaining(headerKey -> { | ||
var headerValue = req.getHeader(headerKey); | ||
|
||
headerValues | ||
.append("[") | ||
.append(headerKey) | ||
.append(" : ") | ||
.append(headerValue) | ||
.append(" , ") | ||
.append("] "); | ||
}); | ||
var requestBody = new String(req.getContentAsByteArray()); | ||
var uri = req.getRequestURI(); | ||
var method = req.getMethod(); | ||
|
||
log.info("[REQUEST] uri : {} , method : {} , header : {} , body : {}" ,uri,method, headerValues, requestBody); | ||
|
||
// response | ||
var responseHeaderValues = new StringBuilder(); | ||
res.getHeaderNames().forEach(headerKey -> { | ||
var headerValue = res.getHeader(headerKey); | ||
responseHeaderValues | ||
.append("[") | ||
.append(headerKey) | ||
.append(" : ") | ||
.append(headerValue) | ||
.append(" ,") | ||
.append("] "); | ||
}); | ||
|
||
// var responseBody = new String(res.getContentAsByteArray()); | ||
|
||
log.info("[RESPONSE] uri : {} , method : {} , header : {} , body : {}",uri,method, responseHeaderValues); | ||
|
||
res.copyBodyToResponse(); | ||
} | ||
} | ||
|
18 changes: 18 additions & 0 deletions
18
layer-api/src/main/java/org/layer/retrospect/controller/RetrospectApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package org.layer.retrospect.controller; | ||
|
||
import org.layer.retrospect.controller.dto.request.RetrospectCreateRequest; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import jakarta.validation.Valid; | ||
|
||
@Tag(name = "회고", description = "회고 관련 API") | ||
public interface RetrospectApi { | ||
|
||
@Operation(summary = "회고 생성", description = "") | ||
ResponseEntity<Void> createRetrospect(@PathVariable("spaceId") Long spaceId, | ||
@RequestBody @Valid RetrospectCreateRequest request); | ||
} |
30 changes: 30 additions & 0 deletions
30
layer-api/src/main/java/org/layer/retrospect/controller/RetrospectController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package org.layer.retrospect.controller; | ||
|
||
import org.layer.retrospect.controller.dto.request.RetrospectCreateRequest; | ||
import org.layer.retrospect.service.RetrospectService; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import jakarta.validation.Valid; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/space/{spaceId}/retrospect") | ||
public class RetrospectController implements RetrospectApi { | ||
|
||
private final RetrospectService retrospectService; | ||
|
||
@Override | ||
@PostMapping | ||
public ResponseEntity<Void> createRetrospect(@PathVariable("spaceId") Long spaceId, | ||
@RequestBody @Valid RetrospectCreateRequest request) { | ||
|
||
retrospectService.create(spaceId, request.formId(), request.title(), request.introduction()); | ||
return ResponseEntity.ok(null); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
...pi/src/main/java/org/layer/retrospect/controller/dto/request/RetrospectCreateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package org.layer.retrospect.controller.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import jakarta.validation.constraints.NotNull; | ||
import jakarta.validation.constraints.Size; | ||
|
||
@Schema(name = "RetrospectCreateRequest", description = "회고 생성 요청 Dto") | ||
public record RetrospectCreateRequest( | ||
@Schema(description = "회고 폼 id", example = "1") | ||
@NotNull | ||
Long formId, | ||
@Schema(description = "회고 제목", example = "중간 발표 이후 회고") | ||
@Size(min = 3) | ||
String title, | ||
@Schema(description = "회고 한줄 설명", example = "우리만의 KPT 회고") | ||
@NotNull | ||
String introduction | ||
|
||
) { | ||
} |
27 changes: 27 additions & 0 deletions
27
layer-api/src/main/java/org/layer/retrospect/service/RetrospectService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.layer.retrospect.service; | ||
|
||
import org.layer.domain.retrospect.entity.Retrospect; | ||
import org.layer.domain.retrospect.entity.RetrospectStatus; | ||
import org.layer.domain.retrospect.repository.RetrospectRepository; | ||
import org.springframework.stereotype.Service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class RetrospectService { | ||
|
||
private final RetrospectRepository retrospectRepository; | ||
|
||
public void create(Long spaceId, Long formId, String title, String introduction){ | ||
Retrospect retrospect = Retrospect.builder() | ||
.title(title) | ||
.formId(formId) | ||
.spaceId(spaceId) | ||
.introduction(introduction) | ||
.retrospectStatus(RetrospectStatus.PROCEEDING) | ||
.build(); | ||
|
||
retrospectRepository.save(retrospect); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
layer-api/src/main/java/org/layer/retrospect/service/dto/RetrospectCreateServiceRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package org.layer.retrospect.service.dto; | ||
|
||
import java.util.List; | ||
|
||
public record RetrospectCreateServiceRequest( | ||
String title, | ||
Long spaceId, | ||
List<String> questions, | ||
boolean isMyForm | ||
) { | ||
} |
25 changes: 25 additions & 0 deletions
25
layer-domain/src/main/java/org/layer/domain/BaseEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package org.layer.domain; | ||
|
||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.MappedSuperclass; | ||
import lombok.AccessLevel; | ||
import lombok.NoArgsConstructor; | ||
import org.springframework.data.annotation.CreatedDate; | ||
import org.springframework.data.annotation.LastModifiedDate; | ||
import java.time.LocalDateTime; | ||
|
||
@MappedSuperclass | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class BaseEntity { | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
|
||
@CreatedDate | ||
private LocalDateTime createdAt; | ||
|
||
@LastModifiedDate | ||
private LocalDateTime updatedAt; | ||
} |
26 changes: 26 additions & 0 deletions
26
layer-domain/src/main/java/org/layer/domain/block/converter/BlockStyleConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package org.layer.domain.block.converter; | ||
|
||
import jakarta.persistence.AttributeConverter; | ||
import jakarta.persistence.Converter; | ||
import org.layer.domain.block.enums.BlockType; | ||
|
||
|
||
import java.util.stream.Stream; | ||
|
||
@Converter | ||
public class BlockStyleConverter implements AttributeConverter<BlockType, String> { | ||
|
||
@Override | ||
public String convertToDatabaseColumn(BlockType blockType) { | ||
return blockType.getStyle(); | ||
} | ||
|
||
@Override | ||
public BlockType convertToEntityAttribute(String blockStyle) { | ||
if(blockStyle == null){ | ||
return null; | ||
} | ||
return Stream.of(BlockType.values()).filter(t -> t.getStyle().equals(blockStyle)).findFirst() | ||
.orElseThrow(IllegalArgumentException::new); | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
layer-domain/src/main/java/org/layer/domain/block/entity/Block.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package org.layer.domain.block.entity; | ||
|
||
import jakarta.persistence.*; | ||
import jakarta.validation.constraints.NotNull; | ||
import lombok.*; | ||
import org.layer.domain.BaseEntity; | ||
import org.layer.domain.block.converter.BlockStyleConverter; | ||
import org.layer.domain.block.enums.BlockType; | ||
import org.layer.domain.blockOption.entity.BlockOption; | ||
|
||
import java.util.HashSet; | ||
import java.util.Set; | ||
|
||
@Getter | ||
@Entity | ||
@EqualsAndHashCode(callSuper = true) | ||
@AllArgsConstructor | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class Block extends BaseEntity { | ||
|
||
/** | ||
* Form RelationId | ||
*/ | ||
@NotNull | ||
private Long formId; | ||
|
||
private String label; | ||
|
||
@Column(length = 20) | ||
@NotNull | ||
@Convert(converter = BlockStyleConverter.class) | ||
private BlockType style; | ||
|
||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "block", cascade = CascadeType.ALL, orphanRemoval = true) | ||
private Set<BlockOption> options = new HashSet<>(); | ||
} |
35 changes: 35 additions & 0 deletions
35
layer-domain/src/main/java/org/layer/domain/block/enums/BlockType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package org.layer.domain.block.enums; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@AllArgsConstructor | ||
@Getter | ||
public enum BlockType { | ||
/** | ||
* 질문(입력) 블록 종류 | ||
* 1. 짧은 인풋 | ||
* 2. 마크다운 | ||
* 3. 레인저 | ||
* 4. 콤보 박스 | ||
* 5. 카드 | ||
* 6. 숫자 인풋 | ||
* | ||
* 질문 블록 중 이산적인 블록 종류 | ||
* 1. 레인저( 숫자 ) | ||
* 2. 콤보 박스 | ||
* 3. 카드 | ||
* | ||
*/ | ||
|
||
PLAIN_TEXT("짧은 입력","plain_text","single"), | ||
MARKDOWN("마크다운 입력","markdown","single"), | ||
RANGER("범위 지정","range","multi"), | ||
COMBOBOX("콤보 박스","combobox","multi"), | ||
CARD("카드 선택 입력","card","multi"), | ||
NUMBER("숫자 입력","number","single"); | ||
|
||
private String description; | ||
private String style; | ||
private String type; | ||
} |
Oops, something went wrong.