Skip to content

Commit

Permalink
Merge pull request #15 from NOW-SOPT-SERVER/seminar/#3
Browse files Browse the repository at this point in the history
🌻[Assignment] Week_3_Seminar
  • Loading branch information
junggyo1020 authored May 28, 2024
2 parents 21cc9ef + 6e544dd commit 6c3e2de
Show file tree
Hide file tree
Showing 19 changed files with 433 additions and 96 deletions.
Binary file modified .DS_Store
Binary file not shown.

This file was deleted.

This file was deleted.

27 changes: 0 additions & 27 deletions practice2/src/main/java/com/sopt/practice2/domain/Member.java

This file was deleted.

20 changes: 0 additions & 20 deletions practice2/src/main/java/com/sopt/practice2/domain/Part.java

This file was deleted.

141 changes: 141 additions & 0 deletions week2/clone-coding/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions week3/seminar3/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,5 @@ out/

### VS Code ###
.vscode/
*.yml

2 changes: 2 additions & 0 deletions week3/seminar3/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ repositories {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'org.postgresql', name: 'postgresql', version: '42.7.3'
implementation 'org.springframework.boot:spring-boot-starter-validation'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.sopt.seminar3.common;

import jakarta.persistence.EntityNotFoundException;
import org.sopt.seminar3.common.dto.ErrorResponse;
import org.sopt.seminar3.exception.BlogNotFoundException;
import org.sopt.seminar3.exception.NotFoundException;
import org.sopt.seminar3.exception.message.ErrorMessage;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.Objects;

@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(NotFoundException.class)
protected ResponseEntity<ErrorResponse> handleEntityNotFoundException(NotFoundException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(ErrorResponse.of(ErrorMessage.MEMBER_NOT_FOUND_BY_ID_EXCEPTION));
}

@ExceptionHandler(BlogNotFoundException.class)
protected ResponseEntity<ErrorResponse> handleEntityNotFoundException(BlogNotFoundException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(ErrorResponse.of(ErrorMessage.BLOG_NOT_FOUND_BY_ID_EXCEPTION));
}

@ExceptionHandler(MethodArgumentNotValidException.class)
protected ResponseEntity<ErrorResponse> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(ErrorResponse.of(HttpStatus.BAD_REQUEST.value(), Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.sopt.seminar3.controller;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.sopt.seminar3.domain.SuccessMessage;
import org.sopt.seminar3.dto.BlogCreateRequest;
import org.sopt.seminar3.dto.BlogTitleUpdateRequest;
import org.sopt.seminar3.common.dto.SuccessResponse;
import org.sopt.seminar3.service.BlogService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class BlogController {

private final BlogService blogService;

@PostMapping("/blog")
public ResponseEntity<SuccessResponse> createBlog(
@RequestHeader(name = "memberId") Long memberId, // 멀버 μ‹λ³„μžλŠ” μ€‘μš”ν•œ μ •λ³΄μ΄λ―€λ‘œ 헀더λ₯Ό 톡해 λ°›μ•„μ˜΄
@RequestBody BlogCreateRequest blogCreateRequest
){
return ResponseEntity.status(HttpStatus.CREATED)
.header("Location", blogService.create(memberId, blogCreateRequest))
.body(SuccessResponse.of(SuccessMessage.BLOG_CREATE_SUCCESS));
}

@PatchMapping("/blog/{blogId}/title")
public ResponseEntity updateBlogTitle(
@PathVariable Long blogId,
@Valid @RequestBody BlogTitleUpdateRequest blogTitleUpdateRequest
){
blogService.updateTitle(blogId, blogTitleUpdateRequest);
return ResponseEntity.noContent().build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.sopt.seminar3.controller;

import lombok.RequiredArgsConstructor;
import org.sopt.seminar3.dto.MemberCreateDto;
import org.sopt.seminar3.dto.MemberFindDto;
import org.sopt.seminar3.service.MemberService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.net.URI;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/member")
public class MemberController {

private final MemberService memberService;

@PostMapping
public ResponseEntity createMember(
@RequestBody MemberCreateDto memberCreate
) {
return ResponseEntity.created(URI.create(memberService.createMember(memberCreate))).build();
}

@GetMapping("/{memberId}")
public ResponseEntity<MemberFindDto> findMemberById(
@PathVariable Long memberId
) {
return ResponseEntity.ok(memberService.findMemberById(memberId));
}

@DeleteMapping("/{memberId}")
public ResponseEntity deleteMemberById(
@PathVariable Long memberId
) {
memberService.deleteMemberById(memberId);
return ResponseEntity.noContent().build();
}
}
Loading

0 comments on commit 6c3e2de

Please sign in to comment.