From acb362cb35d24a93426d3e01fa239b8c2f1e2ffe Mon Sep 17 00:00:00 2001 From: chimaek Date: Tue, 11 May 2021 15:44:51 +0900 Subject: [PATCH 1/7] number1 commit --- .../controller/AccountController.java | 22 ++++++ .../maximus/spring_server/domain/Account.java | 30 +++++++++ .../spring_server/dto/AccountSaveDto.java | 29 ++++++++ .../repository/AccountRepository.java | 11 +++ .../spring_server/service/AccountService.java | 38 +++++++++++ .../controller/AccountControllerTest.java | 67 +++++++++++++++++++ 6 files changed, 197 insertions(+) create mode 100644 src/main/java/com/maximus/spring_server/controller/AccountController.java create mode 100644 src/main/java/com/maximus/spring_server/domain/Account.java create mode 100644 src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java create mode 100644 src/main/java/com/maximus/spring_server/repository/AccountRepository.java create mode 100644 src/main/java/com/maximus/spring_server/service/AccountService.java create mode 100644 src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java new file mode 100644 index 0000000..8eb7f1a --- /dev/null +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -0,0 +1,22 @@ +package com.maximus.spring_server.controller; + + +import com.maximus.spring_server.dto.AccountSaveDto; +import com.maximus.spring_server.service.AccountService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class AccountController { + + private final AccountService accountService; + + @PostMapping("/account/signup") + public Long save(@RequestBody AccountSaveDto accountSaveDto) { + return accountService.save(accountSaveDto); + } + +} diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java new file mode 100644 index 0000000..f7348cf --- /dev/null +++ b/src/main/java/com/maximus/spring_server/domain/Account.java @@ -0,0 +1,30 @@ +package com.maximus.spring_server.domain; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Getter +@NoArgsConstructor +public class Account { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "username",nullable = false) + private String username; + + @Column(name = "password",nullable = false) + private String password; + + @Builder + public Account(String username, String password) { + this.username = username; + this.password = password; + } +} diff --git a/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java b/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java new file mode 100644 index 0000000..dc91e26 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java @@ -0,0 +1,29 @@ +package com.maximus.spring_server.dto; + + +import com.maximus.spring_server.domain.Account; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class AccountSaveDto { + + private String username; + private String password; + + @Builder + public AccountSaveDto(String username, String password) { + this.username = username; + this.password = password; + } + + public Account toEntity(){ + return Account.builder() + .username(username) + .password(password) + .build(); + + } +} diff --git a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java new file mode 100644 index 0000000..7045e8d --- /dev/null +++ b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java @@ -0,0 +1,11 @@ +package com.maximus.spring_server.repository; + +import com.maximus.spring_server.domain.Account; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +public interface AccountRepository extends JpaRepository { + + + +} diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java new file mode 100644 index 0000000..dcf1d86 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -0,0 +1,38 @@ +package com.maximus.spring_server.service; + + +import com.maximus.spring_server.dto.AccountSaveDto; +import com.maximus.spring_server.repository.AccountRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.ResponseStatus; + + +@Service +@RequiredArgsConstructor +public class AccountService { + + private final AccountRepository accountRepository; + + @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "잘못된 접근입니다.") + public class UrlNotFoundException extends RuntimeException { + } + + @Transactional + public Long save(AccountSaveDto accountSaveDto) { + String username = accountSaveDto.getUsername(); + boolean anyMatch = accountRepository.findAll() + .stream() + .limit(1) + .anyMatch((s) -> s.getUsername().equals(username)); + if (anyMatch == true) { + throw new UrlNotFoundException(); + } + return accountRepository.save(accountSaveDto.toEntity()).getId(); + + + } +} diff --git a/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java b/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java new file mode 100644 index 0000000..8124e13 --- /dev/null +++ b/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java @@ -0,0 +1,67 @@ +package com.maximus.spring_server.controller; + +import com.maximus.spring_server.domain.Account; +import com.maximus.spring_server.dto.AccountSaveDto; +import com.maximus.spring_server.repository.AccountRepository; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Objects; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class AccountControllerTest { + + @LocalServerPort + public int port; + + @Autowired + private AccountRepository accountRepository; + + @Autowired + private TestRestTemplate testRestTemplate; + +// @AfterEach +// public void refrash(){ +// accountRepository.deleteAll(); +// } + + + @Test + public void data_post() { + String url = "http://localhost:" + port + "/account/signup"; + String username = "me"; + String password = "1234"; + + AccountSaveDto accountSaveDto = AccountSaveDto.builder() + .username(username) + .password(password) + .build(); + + ResponseEntity responseEntity = testRestTemplate.postForEntity(url, accountSaveDto, Long.class); + + assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); + + assertThat(responseEntity.getBody()).isGreaterThan(0L); + + AccountSaveDto accountSaveDto2 = AccountSaveDto.builder() + .username(username) + .password(password) + .build(); + + ResponseEntity responseEntity2 = testRestTemplate.postForEntity(url, accountSaveDto2, Object.class); + assertThat(responseEntity2.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); + + + } +} \ No newline at end of file From 67786712c4d738bb905a6af06346196cc4ba8bc2 Mon Sep 17 00:00:00 2001 From: chimaek Date: Tue, 18 May 2021 11:27:50 +0900 Subject: [PATCH 2/7] ddd modify --- .../maximus/spring_server/domain/Account.java | 25 +++++++++------- .../spring_server/domain/value/User.java | 16 ++++++++++ .../spring_server/dto/AccountSaveDto.java | 29 ------------------- .../spring_server/service/AccountService.java | 21 +++++--------- 4 files changed, 37 insertions(+), 54 deletions(-) create mode 100644 src/main/java/com/maximus/spring_server/domain/value/User.java delete mode 100644 src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java index f7348cf..45f947d 100644 --- a/src/main/java/com/maximus/spring_server/domain/Account.java +++ b/src/main/java/com/maximus/spring_server/domain/Account.java @@ -1,5 +1,6 @@ package com.maximus.spring_server.domain; +import com.maximus.spring_server.domain.value.User; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -10,21 +11,23 @@ @Getter @NoArgsConstructor public class Account { + private Long accountId; + private User user; + public Account(Long accountId, User user) { + this.accountId = accountId; + this.user = user; + } - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + public void save(Long accountId) { + verifyExitsUser(accountId); - @Column(name = "username",nullable = false) - private String username; + } - @Column(name = "password",nullable = false) - private String password; + private void verifyExitsUser(Long accountId) { + if (this.accountId == accountId) throw new IllegalArgumentException("no"); - @Builder - public Account(String username, String password) { - this.username = username; - this.password = password; } + + } diff --git a/src/main/java/com/maximus/spring_server/domain/value/User.java b/src/main/java/com/maximus/spring_server/domain/value/User.java new file mode 100644 index 0000000..7c5d890 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/domain/value/User.java @@ -0,0 +1,16 @@ +package com.maximus.spring_server.domain.value; + +import lombok.Getter; + +@Getter +public class User { + private String userName; + private String password; + + public User(String userName, String password) { + this.userName = userName; + this.password = password; + } + + +} diff --git a/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java b/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java deleted file mode 100644 index dc91e26..0000000 --- a/src/main/java/com/maximus/spring_server/dto/AccountSaveDto.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.maximus.spring_server.dto; - - -import com.maximus.spring_server.domain.Account; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@NoArgsConstructor -public class AccountSaveDto { - - private String username; - private String password; - - @Builder - public AccountSaveDto(String username, String password) { - this.username = username; - this.password = password; - } - - public Account toEntity(){ - return Account.builder() - .username(username) - .password(password) - .build(); - - } -} diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java index dcf1d86..ee9021f 100644 --- a/src/main/java/com/maximus/spring_server/service/AccountService.java +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -1,6 +1,7 @@ package com.maximus.spring_server.service; +import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.dto.AccountSaveDto; import com.maximus.spring_server.repository.AccountRepository; import lombok.RequiredArgsConstructor; @@ -17,22 +18,14 @@ public class AccountService { private final AccountRepository accountRepository; - @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "잘못된 접근입니다.") - public class UrlNotFoundException extends RuntimeException { - } - @Transactional - public Long save(AccountSaveDto accountSaveDto) { - String username = accountSaveDto.getUsername(); - boolean anyMatch = accountRepository.findAll() - .stream() - .limit(1) - .anyMatch((s) -> s.getUsername().equals(username)); - if (anyMatch == true) { - throw new UrlNotFoundException(); - } - return accountRepository.save(accountSaveDto.toEntity()).getId(); + public void save(Long id) { + Account account = accountRepository.findById(id); + if (account == null) { + throw new IllegalArgumentException("account not content"); + } + account.save(); } } From 9f70584b5e3ea17323b62206ab3bee4d7bb7c2d7 Mon Sep 17 00:00:00 2001 From: chimaek Date: Tue, 1 Jun 2021 18:31:23 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20ddd=EC=A0=81=EC=9A=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountController.java | 32 ++++++++++------- .../controller/existsUserException.java | 12 +++++++ .../maximus/spring_server/domain/Account.java | 34 +++++++++++-------- .../spring_server/domain/value/User.java | 16 --------- .../repository/AccountRepository.java | 7 ++-- .../spring_server/service/AccountService.java | 18 +++------- .../controller/AccountControllerTest.java | 7 ---- 7 files changed, 59 insertions(+), 67 deletions(-) create mode 100644 src/main/java/com/maximus/spring_server/controller/existsUserException.java delete mode 100644 src/main/java/com/maximus/spring_server/domain/value/User.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java index 8eb7f1a..e77c68b 100644 --- a/src/main/java/com/maximus/spring_server/controller/AccountController.java +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -1,22 +1,28 @@ package com.maximus.spring_server.controller; - -import com.maximus.spring_server.dto.AccountSaveDto; +import com.fasterxml.jackson.databind.util.JSONPObject; +import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.service.AccountService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; @RestController -@RequiredArgsConstructor public class AccountController { + @Autowired + private AccountService accountService; - private final AccountService accountService; - - @PostMapping("/account/signup") - public Long save(@RequestBody AccountSaveDto accountSaveDto) { - return accountService.save(accountSaveDto); + @ResponseBody + @RequestMapping(value = "/account/signup", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public HttpEntity signUp(@RequestBody Account account) { + HttpHeaders httpHeaders = new HttpHeaders(); + try { + accountService.saveUser(account); + return new HttpEntity(account,httpHeaders); + } catch () { + return account; + } } - } diff --git a/src/main/java/com/maximus/spring_server/controller/existsUserException.java b/src/main/java/com/maximus/spring_server/controller/existsUserException.java new file mode 100644 index 0000000..2d57a97 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/controller/existsUserException.java @@ -0,0 +1,12 @@ +package com.maximus.spring_server.controller; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; + +public class existsUserException extends Throwable { + public existsUserException(Enum httpStatus, String s) { + if (httpStatus == HttpStatus.BAD_REQUEST){ + System.out.println(s); + } + } +} diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java index 45f947d..2b0c789 100644 --- a/src/main/java/com/maximus/spring_server/domain/Account.java +++ b/src/main/java/com/maximus/spring_server/domain/Account.java @@ -1,33 +1,37 @@ package com.maximus.spring_server.domain; -import com.maximus.spring_server.domain.value.User; -import lombok.Builder; +import com.maximus.spring_server.repository.AccountRepository; import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; import javax.persistence.*; +@RequiredArgsConstructor @Entity @Getter -@NoArgsConstructor +@Table(name = "account") public class Account { - private Long accountId; - private User user; - public Account(Long accountId, User user) { - this.accountId = accountId; - this.user = user; - } + private final AccountRepository accountRepository; - public void save(Long accountId) { - verifyExitsUser(accountId); + @GeneratedValue(strategy = GenerationType.AUTO) + private Long userId; - } + @Id + @Column(name = "username") + private String username; - private void verifyExitsUser(Long accountId) { - if (this.accountId == accountId) throw new IllegalArgumentException("no"); + @Column(name = "password") + private String password; + public void save(Account account){ + account.checkExistUser(account.getUsername()); } + private void checkExistUser(String username) { + if (accountRepository.existsById(username) || username.isEmpty()) throw new IllegalArgumentException("!!!"); + + } } diff --git a/src/main/java/com/maximus/spring_server/domain/value/User.java b/src/main/java/com/maximus/spring_server/domain/value/User.java deleted file mode 100644 index 7c5d890..0000000 --- a/src/main/java/com/maximus/spring_server/domain/value/User.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.maximus.spring_server.domain.value; - -import lombok.Getter; - -@Getter -public class User { - private String userName; - private String password; - - public User(String userName, String password) { - this.userName = userName; - this.password = password; - } - - -} diff --git a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java index 7045e8d..c377367 100644 --- a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java +++ b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java @@ -3,9 +3,10 @@ import com.maximus.spring_server.domain.Account; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; -public interface AccountRepository extends JpaRepository { - - +@Repository +public interface AccountRepository extends JpaRepository { } diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java index ee9021f..995a8b8 100644 --- a/src/main/java/com/maximus/spring_server/service/AccountService.java +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -1,31 +1,23 @@ package com.maximus.spring_server.service; - +import com.maximus.spring_server.controller.existsUserException; import com.maximus.spring_server.domain.Account; -import com.maximus.spring_server.dto.AccountSaveDto; import com.maximus.spring_server.repository.AccountRepository; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatus; -import org.springframework.http.client.ClientHttpResponse; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.ResponseStatus; +import java.util.Optional; @Service @RequiredArgsConstructor public class AccountService { - private final AccountRepository accountRepository; @Transactional - public void save(Long id) { - Account account = accountRepository.findById(id); - - if (account == null) { - throw new IllegalArgumentException("account not content"); - } - account.save(); - + public Account saveUser(Account account) { + return accountRepository.save(account); } } diff --git a/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java b/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java index 8124e13..7170c11 100644 --- a/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java +++ b/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java @@ -1,10 +1,7 @@ package com.maximus.spring_server.controller; -import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.dto.AccountSaveDto; import com.maximus.spring_server.repository.AccountRepository; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -13,11 +10,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import java.util.List; -import java.util.Objects; - import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class AccountControllerTest { From b05094a77deb6d0e3248c3417f7745c36515f796 Mon Sep 17 00:00:00 2001 From: chimaek Date: Wed, 2 Jun 2021 18:31:04 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20ddd=EC=A0=81=EC=9A=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountController.java | 19 +++--- .../controller/UserException.java | 10 ++++ .../controller/existsUserException.java | 12 ---- .../maximus/spring_server/domain/Account.java | 33 +++++----- .../repository/AccountRepository.java | 7 ++- .../spring_server/service/AccountService.java | 9 +-- .../controller/AccountControllerTest.java | 60 ------------------- .../service/AccountServiceTest.java | 58 ++++++++++++++++++ 8 files changed, 104 insertions(+), 104 deletions(-) create mode 100644 src/main/java/com/maximus/spring_server/controller/UserException.java delete mode 100644 src/main/java/com/maximus/spring_server/controller/existsUserException.java delete mode 100644 src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java create mode 100644 src/test/java/com/maximus/spring_server/service/AccountServiceTest.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java index e77c68b..8b6e3d6 100644 --- a/src/main/java/com/maximus/spring_server/controller/AccountController.java +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -1,12 +1,8 @@ package com.maximus.spring_server.controller; -import com.fasterxml.jackson.databind.util.JSONPObject; import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @RestController @@ -15,14 +11,13 @@ public class AccountController { private AccountService accountService; @ResponseBody - @RequestMapping(value = "/account/signup", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) - public HttpEntity signUp(@RequestBody Account account) { - HttpHeaders httpHeaders = new HttpHeaders(); - try { - accountService.saveUser(account); - return new HttpEntity(account,httpHeaders); - } catch () { + @RequestMapping(value = "/account/signup", method = RequestMethod.POST) + public Account signUp(@RequestBody Account account) { + try{ + accountService.saveUser(account); + }catch (UserException e){ + e.printStackTrace(); + } return account; - } } } diff --git a/src/main/java/com/maximus/spring_server/controller/UserException.java b/src/main/java/com/maximus/spring_server/controller/UserException.java new file mode 100644 index 0000000..bbb4105 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/controller/UserException.java @@ -0,0 +1,10 @@ +package com.maximus.spring_server.controller; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(code = HttpStatus.BAD_REQUEST,reason = "Exits User") +public class UserException extends RuntimeException { + +} diff --git a/src/main/java/com/maximus/spring_server/controller/existsUserException.java b/src/main/java/com/maximus/spring_server/controller/existsUserException.java deleted file mode 100644 index 2d57a97..0000000 --- a/src/main/java/com/maximus/spring_server/controller/existsUserException.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.maximus.spring_server.controller; - -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpStatus; - -public class existsUserException extends Throwable { - public existsUserException(Enum httpStatus, String s) { - if (httpStatus == HttpStatus.BAD_REQUEST){ - System.out.println(s); - } - } -} diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java index 2b0c789..f68f7ac 100644 --- a/src/main/java/com/maximus/spring_server/domain/Account.java +++ b/src/main/java/com/maximus/spring_server/domain/Account.java @@ -1,36 +1,41 @@ package com.maximus.spring_server.domain; -import com.maximus.spring_server.repository.AccountRepository; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import javax.persistence.*; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; -@RequiredArgsConstructor @Entity @Getter @Table(name = "account") public class Account { - private final AccountRepository accountRepository; - - @GeneratedValue(strategy = GenerationType.AUTO) - private Long userId; + public Account(String username, String password) { + this.username = username; + this.password = password; + } @Id - @Column(name = "username") + @Column(name = "username", nullable = false) private String username; - @Column(name = "password") + @Column(name = "password", nullable = false) private String password; - public void save(Account account){ - account.checkExistUser(account.getUsername()); + public void save() { + checkUser(username); + checkPassword(password); + } + + private void checkPassword(String password) { + if (password.isEmpty()) throw new IllegalArgumentException("no password"); } - private void checkExistUser(String username) { - if (accountRepository.existsById(username) || username.isEmpty()) throw new IllegalArgumentException("!!!"); + private void checkUser(String username) { + if (username.isEmpty()) throw new IllegalArgumentException("!!!"); } diff --git a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java index c377367..1a0c54e 100644 --- a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java +++ b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java @@ -3,10 +3,13 @@ import com.maximus.spring_server.domain.Account; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository -public interface AccountRepository extends JpaRepository { +public interface AccountRepository extends JpaRepository{ + + Account findByUsername(String username); + + } diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java index 995a8b8..29298b7 100644 --- a/src/main/java/com/maximus/spring_server/service/AccountService.java +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -1,23 +1,24 @@ package com.maximus.spring_server.service; -import com.maximus.spring_server.controller.existsUserException; +import com.maximus.spring_server.controller.UserException; import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.repository.AccountRepository; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; +import javax.persistence.EntityExistsException; @Service @RequiredArgsConstructor public class AccountService { private final AccountRepository accountRepository; + @Transactional public Account saveUser(Account account) { + if(accountRepository.findByUsername(account.getUsername())!=null) throw new UserException(); + account.save(); return accountRepository.save(account); } } diff --git a/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java b/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java deleted file mode 100644 index 7170c11..0000000 --- a/src/test/java/com/maximus/spring_server/controller/AccountControllerTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.maximus.spring_server.controller; - -import com.maximus.spring_server.dto.AccountSaveDto; -import com.maximus.spring_server.repository.AccountRepository; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -class AccountControllerTest { - - @LocalServerPort - public int port; - - @Autowired - private AccountRepository accountRepository; - - @Autowired - private TestRestTemplate testRestTemplate; - -// @AfterEach -// public void refrash(){ -// accountRepository.deleteAll(); -// } - - - @Test - public void data_post() { - String url = "http://localhost:" + port + "/account/signup"; - String username = "me"; - String password = "1234"; - - AccountSaveDto accountSaveDto = AccountSaveDto.builder() - .username(username) - .password(password) - .build(); - - ResponseEntity responseEntity = testRestTemplate.postForEntity(url, accountSaveDto, Long.class); - - assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); - - assertThat(responseEntity.getBody()).isGreaterThan(0L); - - AccountSaveDto accountSaveDto2 = AccountSaveDto.builder() - .username(username) - .password(password) - .build(); - - ResponseEntity responseEntity2 = testRestTemplate.postForEntity(url, accountSaveDto2, Object.class); - assertThat(responseEntity2.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); - - - } -} \ No newline at end of file diff --git a/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java b/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java new file mode 100644 index 0000000..016fb4f --- /dev/null +++ b/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java @@ -0,0 +1,58 @@ +package com.maximus.spring_server.service; + +import com.maximus.spring_server.domain.Account; +import com.maximus.spring_server.repository.AccountRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import java.util.Optional; + +import static org.mockito.BDDMockito.*; + +import static org.assertj.core.api.Assertions.assertThat; + +@ExtendWith(MockitoExtension.class) +class AccountServiceTest { + + @Mock + private AccountRepository accountRepository; + + @InjectMocks + private AccountService accountService; + + + @AfterEach + public void tearDown() throws Exception { + accountRepository.deleteAll(); + } + + @Test + public void 저장작동테스트() { + String username = "1234"; + String password = "me2"; + + Account account = new Account(username, password); + //given + given(accountService.saveUser(account)).willReturn(account); + //when + + Account account2 = accountService.saveUser(account); + assertThat(account.getUsername()).isEqualTo(username); + assertThat(account.getPassword()).isEqualTo(password); + + assertThat(account2.getUsername()).isEqualTo(account.getUsername()); + assertThat(account2.getPassword()).isEqualTo(account.getPassword()); + + assertThat(account2.getUsername()).isNotEmpty(); + assertThat(account2.getPassword()).isNotEmpty(); + + } +} + From f7be906ef942d476ca66bca88ca8c696e7ce3939 Mon Sep 17 00:00:00 2001 From: chimaek Date: Tue, 15 Jun 2021 13:11:13 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountController.java | 27 ++++++++++++------- .../controller/UserException.java | 10 ------- .../maximus/spring_server/domain/Account.java | 9 ++++--- .../repository/AccountRepository.java | 1 - .../spring_server/service/AccountService.java | 17 ++++++------ src/main/resources/application.properties | 6 ++++- .../service/AccountServiceTest.java | 8 +----- 7 files changed, 38 insertions(+), 40 deletions(-) delete mode 100644 src/main/java/com/maximus/spring_server/controller/UserException.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java index 8b6e3d6..5d51bcb 100644 --- a/src/main/java/com/maximus/spring_server/controller/AccountController.java +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -2,22 +2,29 @@ import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.service.AccountService; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController +@RequiredArgsConstructor public class AccountController { - @Autowired - private AccountService accountService; - @ResponseBody + private final AccountService accountService; + @RequestMapping(value = "/account/signup", method = RequestMethod.POST) - public Account signUp(@RequestBody Account account) { - try{ - accountService.saveUser(account); - }catch (UserException e){ - e.printStackTrace(); - } - return account; + public ResponseEntity signUp(@RequestBody Account account) throws Exception { + try { + return new ResponseEntity<>(accountService.saveUser(account), HttpStatus.CREATED); + }catch (Exception e){ + return new ResponseEntity<>(accountService.saveUser(account),HttpStatus.BAD_REQUEST); + } + + } + + } diff --git a/src/main/java/com/maximus/spring_server/controller/UserException.java b/src/main/java/com/maximus/spring_server/controller/UserException.java deleted file mode 100644 index bbb4105..0000000 --- a/src/main/java/com/maximus/spring_server/controller/UserException.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.maximus.spring_server.controller; - -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ResponseStatus; - -@ResponseStatus(code = HttpStatus.BAD_REQUEST,reason = "Exits User") -public class UserException extends RuntimeException { - -} diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java index f68f7ac..fdc452f 100644 --- a/src/main/java/com/maximus/spring_server/domain/Account.java +++ b/src/main/java/com/maximus/spring_server/domain/Account.java @@ -1,6 +1,7 @@ package com.maximus.spring_server.domain; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; import javax.persistence.Column; @@ -11,6 +12,7 @@ @Entity @Getter @Table(name = "account") +@NoArgsConstructor public class Account { public Account(String username, String password) { @@ -25,17 +27,18 @@ public Account(String username, String password) { @Column(name = "password", nullable = false) private String password; - public void save() { + public void validationUser() { checkUser(username); checkPassword(password); } + private void checkPassword(String password) { - if (password.isEmpty()) throw new IllegalArgumentException("no password"); + if (password.isEmpty()) throw new IllegalArgumentException("패스워드를 입력해주세요"); } private void checkUser(String username) { - if (username.isEmpty()) throw new IllegalArgumentException("!!!"); + if (username.isEmpty()) throw new IllegalArgumentException("닉네임을 입력해주세요"); } diff --git a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java index 1a0c54e..c89de06 100644 --- a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java +++ b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java @@ -11,5 +11,4 @@ public interface AccountRepository extends JpaRepository{ Account findByUsername(String username); - } diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java index 29298b7..1e8e4e4 100644 --- a/src/main/java/com/maximus/spring_server/service/AccountService.java +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -1,24 +1,25 @@ package com.maximus.spring_server.service; -import com.maximus.spring_server.controller.UserException; import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.repository.AccountRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.persistence.EntityExistsException; - @Service @RequiredArgsConstructor public class AccountService { - private final AccountRepository accountRepository; + private final AccountRepository accountRepository; @Transactional - public Account saveUser(Account account) { - if(accountRepository.findByUsername(account.getUsername())!=null) throw new UserException(); - account.save(); - return accountRepository.save(account); + public Account saveUser(Account account) throws Exception { + if (accountRepository.findByUsername(account.getUsername()) != null) { + throw new Exception(); + + } + account.validationUser(); + return accountRepository.save(account); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..18ea875 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,5 @@ - +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=1234 +spring.h2.console.enabled=true diff --git a/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java b/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java index 016fb4f..0ac0a90 100644 --- a/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java +++ b/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java @@ -3,20 +3,14 @@ import com.maximus.spring_server.domain.Account; import com.maximus.spring_server.repository.AccountRepository; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -import java.util.Optional; - -import static org.mockito.BDDMockito.*; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; @ExtendWith(MockitoExtension.class) class AccountServiceTest { From a48dcd4a435291fe5e4490c84e12b3817644a5be Mon Sep 17 00:00:00 2001 From: chimaek Date: Thu, 20 Jan 2022 10:38:23 +0900 Subject: [PATCH 6/7] reset --- .../controller/AccountController.java | 30 ----------- .../maximus/spring_server/domain/Account.java | 45 ---------------- .../repository/AccountRepository.java | 14 ----- .../spring_server/service/AccountService.java | 25 --------- .../service/AccountServiceTest.java | 52 ------------------- 5 files changed, 166 deletions(-) delete mode 100644 src/main/java/com/maximus/spring_server/controller/AccountController.java delete mode 100644 src/main/java/com/maximus/spring_server/domain/Account.java delete mode 100644 src/main/java/com/maximus/spring_server/repository/AccountRepository.java delete mode 100644 src/main/java/com/maximus/spring_server/service/AccountService.java delete mode 100644 src/test/java/com/maximus/spring_server/service/AccountServiceTest.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java deleted file mode 100644 index 5d51bcb..0000000 --- a/src/main/java/com/maximus/spring_server/controller/AccountController.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.maximus.spring_server.controller; - -import com.maximus.spring_server.domain.Account; -import com.maximus.spring_server.service.AccountService; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequiredArgsConstructor -public class AccountController { - - private final AccountService accountService; - - @RequestMapping(value = "/account/signup", method = RequestMethod.POST) - public ResponseEntity signUp(@RequestBody Account account) throws Exception { - try { - return new ResponseEntity<>(accountService.saveUser(account), HttpStatus.CREATED); - }catch (Exception e){ - return new ResponseEntity<>(accountService.saveUser(account),HttpStatus.BAD_REQUEST); - } - - - } - - -} diff --git a/src/main/java/com/maximus/spring_server/domain/Account.java b/src/main/java/com/maximus/spring_server/domain/Account.java deleted file mode 100644 index fdc452f..0000000 --- a/src/main/java/com/maximus/spring_server/domain/Account.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.maximus.spring_server.domain; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.RequiredArgsConstructor; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -@Entity -@Getter -@Table(name = "account") -@NoArgsConstructor -public class Account { - - public Account(String username, String password) { - this.username = username; - this.password = password; - } - - @Id - @Column(name = "username", nullable = false) - private String username; - - @Column(name = "password", nullable = false) - private String password; - - public void validationUser() { - checkUser(username); - checkPassword(password); - } - - - private void checkPassword(String password) { - if (password.isEmpty()) throw new IllegalArgumentException("패스워드를 입력해주세요"); - } - - private void checkUser(String username) { - if (username.isEmpty()) throw new IllegalArgumentException("닉네임을 입력해주세요"); - - } - -} diff --git a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java b/src/main/java/com/maximus/spring_server/repository/AccountRepository.java deleted file mode 100644 index c89de06..0000000 --- a/src/main/java/com/maximus/spring_server/repository/AccountRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.maximus.spring_server.repository; - -import com.maximus.spring_server.domain.Account; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; - -@Repository -public interface AccountRepository extends JpaRepository{ - - Account findByUsername(String username); - - -} diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java deleted file mode 100644 index 1e8e4e4..0000000 --- a/src/main/java/com/maximus/spring_server/service/AccountService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.maximus.spring_server.service; - -import com.maximus.spring_server.domain.Account; -import com.maximus.spring_server.repository.AccountRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -public class AccountService { - - private final AccountRepository accountRepository; - - @Transactional - public Account saveUser(Account account) throws Exception { - if (accountRepository.findByUsername(account.getUsername()) != null) { - throw new Exception(); - - } - account.validationUser(); - return accountRepository.save(account); - - } -} diff --git a/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java b/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java deleted file mode 100644 index 0ac0a90..0000000 --- a/src/test/java/com/maximus/spring_server/service/AccountServiceTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.maximus.spring_server.service; - -import com.maximus.spring_server.domain.Account; -import com.maximus.spring_server.repository.AccountRepository; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; - -@ExtendWith(MockitoExtension.class) -class AccountServiceTest { - - @Mock - private AccountRepository accountRepository; - - @InjectMocks - private AccountService accountService; - - - @AfterEach - public void tearDown() throws Exception { - accountRepository.deleteAll(); - } - - @Test - public void 저장작동테스트() { - String username = "1234"; - String password = "me2"; - - Account account = new Account(username, password); - //given - given(accountService.saveUser(account)).willReturn(account); - //when - - Account account2 = accountService.saveUser(account); - assertThat(account.getUsername()).isEqualTo(username); - assertThat(account.getPassword()).isEqualTo(password); - - assertThat(account2.getUsername()).isEqualTo(account.getUsername()); - assertThat(account2.getPassword()).isEqualTo(account.getPassword()); - - assertThat(account2.getUsername()).isNotEmpty(); - assertThat(account2.getPassword()).isNotEmpty(); - - } -} - From 9f99d145eabb5e2d26809b93e5cf054e743ee8d7 Mon Sep 17 00:00:00 2001 From: chimaek Date: Thu, 20 Jan 2022 17:31:54 +0900 Subject: [PATCH 7/7] =?UTF-8?q?1=EB=B2=88=20=EA=B5=AC=ED=98=84=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountController.java | 38 +++++++++++++++ .../maximus/spring_server/domain/User.java | 48 +++++++++++++++++++ .../repository/UserRepository.java | 9 ++++ .../spring_server/service/AccountService.java | 32 +++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 src/main/java/com/maximus/spring_server/controller/AccountController.java create mode 100644 src/main/java/com/maximus/spring_server/domain/User.java create mode 100644 src/main/java/com/maximus/spring_server/repository/UserRepository.java create mode 100644 src/main/java/com/maximus/spring_server/service/AccountService.java diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java new file mode 100644 index 0000000..7c57af5 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -0,0 +1,38 @@ +package com.maximus.spring_server.controller; + +import com.maximus.spring_server.domain.User; +import com.maximus.spring_server.service.AccountService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin +public class AccountController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + public AccountController(AccountService accountService) { + this.accountService = accountService; + } + + private final AccountService accountService; + + @PostMapping("/account/signup") + public ResponseEntity responseEntity(@RequestBody User user) throws Exception { + try { + User user1 = accountService.signup(user); + return ResponseEntity.status(HttpStatus.CREATED).body(User.builder().userId(user1.getUserId()).username(user1.getUsername()).build()); + } catch (Exception e) { + logger.info("에러"); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(User.builder().build()); + } + } +} diff --git a/src/main/java/com/maximus/spring_server/domain/User.java b/src/main/java/com/maximus/spring_server/domain/User.java new file mode 100644 index 0000000..fb82b40 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/domain/User.java @@ -0,0 +1,48 @@ +package com.maximus.spring_server.domain; + + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.List; + +@Entity +@Getter +@Builder +@NoArgsConstructor +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userId; + + private String username; + private String password; + +// @Builder +// public User(String username, String password) { +// this.username = username; +// this.password = password; +// } + + + public User(Long userId, String username, String password) { + this.userId = userId; + this.username = username; + this.password = password; + } + + public void ExitUser(List user) throws IllegalArgumentException { + for (User user1 : user) { + if (user1.getUsername().equals(this.getUsername())) { + throw new IllegalArgumentException(); + } + } + + } +} diff --git a/src/main/java/com/maximus/spring_server/repository/UserRepository.java b/src/main/java/com/maximus/spring_server/repository/UserRepository.java new file mode 100644 index 0000000..d31321f --- /dev/null +++ b/src/main/java/com/maximus/spring_server/repository/UserRepository.java @@ -0,0 +1,9 @@ +package com.maximus.spring_server.repository; + +import com.maximus.spring_server.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { +} diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java new file mode 100644 index 0000000..5a4677c --- /dev/null +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -0,0 +1,32 @@ +package com.maximus.spring_server.service; + +import com.maximus.spring_server.domain.User; +import com.maximus.spring_server.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional +public class AccountService { + + private final UserRepository userRepository; + + @Autowired + public AccountService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + @Transactional + public User signup(User user) throws IllegalArgumentException { + List userList = userRepository.findAll(); + try { + user.ExitUser(userList); + return userRepository.save(user); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(); + } + } +}