redis, batch, mongodb is infra

This commit is contained in:
jinho jeong
2022-06-29 14:58:16 +09:00
parent f74b7e17e3
commit a7f84a747b
11 changed files with 111 additions and 33 deletions

View File

@@ -45,9 +45,6 @@ One Day Lifetime SNS
│ │ │ │ ├── request │ │ │ │ ├── request
│ │ │ │ └── response │ │ │ │ └── response
│ │ │ ├── config │ │ │ ├── config
│ │ │ │ ├── RedisConfig.java
│ │ │ │ ├── BatchConfig.java
│ │ │ │ ├── MongoConfig.java
│ │ │ │ └── security │ │ │ │ └── security
│ │ │ │ ├── InterceptorConfig.java │ │ │ │ ├── InterceptorConfig.java
│ │ │ │ └── WebSecurityConfig.java │ │ │ │ └── WebSecurityConfig.java
@@ -60,6 +57,9 @@ One Day Lifetime SNS
│ │ │ └── BatchScheduler.java │ │ │ └── BatchScheduler.java
│ │ └── infra │ │ └── infra
│ │ ├── config │ │ ├── config
│ │ │ ├── RedisConfig.java
│ │ │ ├── MongoConfig.java
│ │ │ ├── BatchConfig.java
│ │ │ ├── KafkaConsumerConfig.java │ │ │ ├── KafkaConsumerConfig.java
│ │ │ └── KafkaProducerConfig.java │ │ │ └── KafkaProducerConfig.java
│ │ ├── dto │ │ ├── dto

View File

@@ -24,7 +24,7 @@ import com.example.oneul.domain.user.domain.UserEntity;
@Entity @Entity
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
@Table(indexes = @Index(name = "i_post", columnList="createdAt")) @Table(name = "post", indexes = @Index(name = "i_post", columnList="createdAt"))
public class Post implements Serializable { public class Post implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id; private Long id;

View File

@@ -4,6 +4,7 @@ import javax.servlet.http.HttpSession;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
@@ -13,6 +14,8 @@ import com.example.oneul.domain.user.domain.UserEntity;
import com.example.oneul.domain.user.dto.LoginDTO; import com.example.oneul.domain.user.dto.LoginDTO;
import com.example.oneul.domain.user.dto.SignUpDTO; import com.example.oneul.domain.user.dto.SignUpDTO;
import com.example.oneul.domain.user.service.UserService; import com.example.oneul.domain.user.service.UserService;
import com.example.oneul.global.common.Code;
import com.example.oneul.global.common.Response;
@RestController @RestController
@RequestMapping(value = "/user") @RequestMapping(value = "/user")
@@ -26,30 +29,24 @@ public class UserApi {
} }
@RequestMapping(value="/signup/", method=RequestMethod.POST) @RequestMapping(value="/signup/", method=RequestMethod.POST)
public UserEntity signUp(@RequestBody SignUpDTO signUpDTO) { public ResponseEntity<Response> signUp(@RequestBody SignUpDTO signUpDTO) {
// TODO: password1, password2 같은지 validator로 검사 // TODO: password1, password2 같은지 validator로 검사
UserEntity user = userService.signUp(signUpDTO.toEntity()); UserEntity user = userService.signUp(signUpDTO.toEntity());
log.info("signUp: " + user.toString()); log.info("signUp: " + user.toString());
return user; return ResponseEntity.ok(new Response(Code.SUCESS, "유저 생성 성공"));
} }
@RequestMapping(value="/login/", method=RequestMethod.POST) @RequestMapping(value="/login/", method=RequestMethod.POST)
public UserEntity login(HttpSession httpSession, @RequestBody LoginDTO loginDTO) { public ResponseEntity<Response> login(HttpSession httpSession, @RequestBody LoginDTO loginDTO) {
UserEntity user = userService.login(loginDTO.toEntity(), httpSession); UserEntity user = userService.login(loginDTO.toEntity(), httpSession);
log.info("login: " + user.toString()); log.info("login: " + user.toString());
return user; return ResponseEntity.ok(new Response(Code.SUCESS, "로그인 성공"));
} }
@RequestMapping(value="/logout/", method=RequestMethod.POST) @RequestMapping(value="/logout/", method=RequestMethod.POST)
public String logout(HttpSession httpSession) { public ResponseEntity<Response> logout(HttpSession httpSession) {
log.info("logout: " + httpSession.toString()); log.info("logout: " + httpSession.toString());
userService.logout(httpSession); userService.logout(httpSession);
return "logout"; return ResponseEntity.ok(new Response(Code.SUCESS, "로그아웃 성공"));
} }
@RequestMapping(value="", method=RequestMethod.GET)
public String hello() {
return "hello";
}
} }

View File

@@ -3,36 +3,28 @@ package com.example.oneul.domain.user.domain;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.OneToMany; import javax.persistence.Table;
import org.springframework.data.annotation.CreatedDate; import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import com.example.oneul.domain.post.domain.Post;
import com.fasterxml.jackson.annotation.JsonIgnore;
@Entity @Entity
@EntityListeners(AuditingEntityListener.class) @Table(name = "user")
public class UserEntity implements Serializable { public class UserEntity implements Serializable {
@Id @GeneratedValue @Id @GeneratedValue
@Column(name = "id", updatable = false)
private Long id; private Long id;
@Column(nullable = false, unique = true) @Column(name = "username", nullable = false, unique = true)
private String username; private String username;
@JsonIgnore @Column(nullable = false) @Column(name = "password", nullable = false)
private String password; private String password;
@JsonIgnore @CreatedDate @CreationTimestamp
@Column(name = "createAt", nullable = false, updatable = false)
private LocalDateTime createdAt; private LocalDateTime createdAt;
@JsonIgnore
@OneToMany(orphanRemoval = true, cascade = CascadeType.REMOVE)
private Set<Post> posts;
public Long getId(){ public Long getId(){
return this.id; return this.id;

View File

@@ -0,0 +1,50 @@
package com.example.oneul.domain.user.dto;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.example.oneul.domain.user.domain.UserEntity;
import com.example.oneul.global.common.Code;
import com.example.oneul.global.common.Response;
public class UserInfo {
@NotNull
private Long id;
@NotBlank
private String username;
public Long getId(){
return this.id;
}
public void setId(Long id){
this.id = id;
}
public String getUsername(){
return this.username;
}
public void setUsername(String username){
this.username = username;
}
public UserInfo() {}
public UserInfo(Long id, String username){
this.id = id;
this.username = username;
}
public static class UserResponse extends Response {
private UserInfo body;
public UserResponse(Code code, String message, UserEntity user){
super(code, message);
this.body = new UserInfo(user.getId(), user.getUsername());
}
public UserInfo getUserInfo(){
return this.body;
}
}
}

View File

@@ -0,0 +1,6 @@
package com.example.oneul.global.common;
public enum Code {
SUCESS,
ERROR
}

View File

@@ -0,0 +1,33 @@
package com.example.oneul.global.common;
import javax.validation.constraints.NotBlank;
public class Response {
@NotBlank
private Code code;
@NotBlank
private String message;
public Code getCode(){
return this.code;
}
public void setCode(Code code){
this.code = code;
}
public String getMessage(){
return this.message;
}
public void setMessage(String message){
this.message = message;
}
public Response() {}
public Response(Code code, String message){
this.code = code;
this.message = message;
}
}

View File

@@ -6,7 +6,7 @@ spring:
properties: properties:
hibernate: hibernate:
show-sql: true show-sql: true
ddl-auto: update ddl-auto: create
hbm2ddl: hbm2ddl:
auto: update auto: update
format_sql: true format_sql: true