Skip to content

Commit

Permalink
[#229] FEAT: Add UserRepository, RoomRepository
Browse files Browse the repository at this point in the history
  • Loading branch information
kcm0147 committed Oct 3, 2021
1 parent cd2ab58 commit 87ecbe5
Show file tree
Hide file tree
Showing 11 changed files with 360 additions and 43 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.rabbitmq.mqserver.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfig {

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.rabbitmq.mqserver.friend.domain;

import static javax.persistence.FetchType.LAZY;


import com.rabbitmq.mqserver.user.domain.User;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
public class Friend {

@Id
@GeneratedValue
@Column(name="friend_id")
private Long id;

@OneToOne(fetch = LAZY)
@JoinColumn(name="to_id")
private User friend;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "from_id")
private User user;

public Friend (User user,User friend) {
this.user = user;
this.friend=friend;
}

public static Friend createFriendShip(User from, User to){
Friend ret = new Friend(from,to);
from.getFriends().add(ret);

return ret;
}

public void updateAll(Friend other){
this.user=other.user;
this.friend=other.friend;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.rabbitmq.mqserver.joinroom.domain;



import com.rabbitmq.mqserver.room.domain.Room;
import com.rabbitmq.mqserver.user.domain.User;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
public class JoinRoom {

@Id
@GeneratedValue
@Column(name="joinRoom_id")
private Long joinRoomId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="room_id")
private Room room;

public JoinRoom(User user,Room room){
setUser(user);
setRoom(room);
}

// 연관관계 편의 메소드
public void setUser(User user){
if(this.user!=null){
this.user.getJoinRooms().remove(this);
}
this.user=user;
user.getJoinRooms().add(this);
}

public void setRoom(Room room){
if(this.room!=null){
this.room.getJoinRooms().remove(this);
}
this.room=room;
room.getJoinRooms().add(this);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import static javax.persistence.FetchType.LAZY;


import com.rabbitmq.mqserver.room.domain.Room;
import com.rabbitmq.mqserver.user.domain.User;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
Expand All @@ -14,7 +16,7 @@
import lombok.Getter;


@Entity(name="Message")
@Entity
@NoArgsConstructor
@Getter
public class Message {
Expand All @@ -30,36 +32,36 @@ public class Message {

private LocalDateTime writtenAt;

// @ManyToOne(fetch = LAZY)
// @JoinColumn(name = "user_id")
// private User user;
//
// @ManyToOne(fetch = LAZY)
// @JoinColumn(name = "room_id")
// private Room room;
//
// //== 연관관계 편의 메서드 ==//
// public void setUser(User user){
// if(this.user != null){
// this.user.getMessages().remove(this);
// }
// this.user = user;
// user.getMessages().add(this);
// }
//
// public void setRoom(Room room){
// if(this.room != null){
// this.room.getMessages().remove(this);
// }
// this.room = room;
// room.getMessages().add(this);
// }
//
// public ChatMessage (User user,Room room,String content){
// this.setUser(user);
// this.setRoom(room);
// this.content=content;
// this.unreadCnt=room.getJoinRooms().size();
// this.writtenAt= LocalDateTime.now();
// }
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "room_id")
private Room room;

//== 연관관계 편의 메서드 ==//
public void setUser(User user){
if(this.user != null){
this.user.getMessages().remove(this);
}
this.user = user;
user.getMessages().add(this);
}

public void setRoom(Room room){
if(this.room != null){
this.room.getMessages().remove(this);
}
this.room = room;
room.getMessages().add(this);
}

public Message (User user,Room room,String content){
this.setUser(user);
this.setRoom(room);
this.content=content;
this.unreadCnt=room.getJoinRooms().size();
this.writtenAt= LocalDateTime.now();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
package com.rabbitmq.mqserver.message.dto;


import lombok.Data;

@Data
public class MessageDto {

private Long userId;
private Long roomId;
private String content;


}
5 changes: 0 additions & 5 deletions mqserver/src/main/java/com/rabbitmq/mqserver/room/Room.java

This file was deleted.

44 changes: 44 additions & 0 deletions mqserver/src/main/java/com/rabbitmq/mqserver/room/domain/Room.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.rabbitmq.mqserver.room.domain;





import com.rabbitmq.mqserver.joinroom.domain.JoinRoom;
import com.rabbitmq.mqserver.message.domain.Message;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
public class Room {

@Id
@GeneratedValue
@Column(name="room_id")
private Long roomId;

private String roomName;


@OneToMany(mappedBy="room")
private List<JoinRoom> joinRooms=new ArrayList<>();

@OneToMany(mappedBy = "room", cascade = CascadeType.ALL) // persist 전파
private List<Message> messages;

public Room(String name){
this.roomName=name;
}

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.rabbitmq.mqserver.room.repository;


import com.rabbitmq.mqserver.room.domain.Room;
import java.util.List;
import javax.persistence.EntityManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

@Repository
@RequiredArgsConstructor
@Transactional
public class RoomRepository {

private final EntityManager em;

@Transactional(readOnly = true)
public Room findById(Long id) {
return em.find(Room.class, id);
}

@Transactional(readOnly = true)
public List<Room> findAll() {
return em.createQuery("select r from Room r")
.getResultList();
}


}
5 changes: 0 additions & 5 deletions mqserver/src/main/java/com/rabbitmq/mqserver/user/User.java

This file was deleted.

Loading

0 comments on commit 87ecbe5

Please sign in to comment.