Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
a280750
feat(domain): college, invite, user, relation, tag, attachment 관련 엔티티 추가
mk3058 Aug 21, 2023
c65be37
feat(domain): add default entities
mk3058 Aug 22, 2023
45b31eb
refactor: 일부 잘못된 패키지 경로 수정. 패키지/클래스 이름 수정
mk3058 Aug 23, 2023
ffc3874
refactor(entity): 문자열 컬럼 길이 지정, 일부 생성자 값 검즘 추가
mk3058 Aug 23, 2023
3b13bba
refactor(dto): Request Dto protected 생성자 추가
mk3058 Aug 26, 2023
deb1214
refactor: domain계층이 presentation계층에 의존하지 않도록 수정
mk3058 Aug 26, 2023
a241e1a
fix(user): 유저의 나이가 20-30 범위로 제한되도록 수정
mk3058 Aug 27, 2023
b650a6e
refactor(dto): dto 이름 수정
mk3058 Aug 27, 2023
da54071
fix(User): 참조 타입에 대한 값 검증 추가
mk3058 Aug 27, 2023
34ce3d8
refactor(matchpost): 패키지 이름 수정
mk3058 Aug 27, 2023
37bfa4e
fix(User): 나이 검증 조건 수정
mk3058 Aug 27, 2023
65fdd5c
feat(chat): 기본 클래스 추가
mk3058 Sep 4, 2023
5746534
feat(college): 기본 클래스 추가
mk3058 Sep 4, 2023
6205617
feat(invite): 기본 클래스 추가
mk3058 Sep 4, 2023
2a734f1
feat(matchPost): 기본 클래스 추가
mk3058 Sep 4, 2023
2e41c43
feat(relation): 기본 클래스 추가
mk3058 Sep 4, 2023
26a257c
fix(matchPost): MatchServicePost 클래스를 순환 참조하던 문제 수정
mk3058 Sep 4, 2023
426437b
feat(tag): 기본 클래스 추가
mk3058 Sep 4, 2023
bffdf80
feat(user): 기본 클래스 추가
mk3058 Sep 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sequence.anonymous.chat.application;

import com.sequence.anonymous.chat.domain.repository.ChatRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class ChatService {

private final ChatRepository chatRepository;
}
32 changes: 32 additions & 0 deletions src/main/java/com/sequence/anonymous/chat/domain/Chat.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.sequence.anonymous.chat.domain;

import com.google.common.base.Preconditions;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import java.util.UUID;
import lombok.Getter;

@Entity
@Getter
public class Chat {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, unique = true)
private UUID chatIdentifier;

protected Chat() {
}

public Chat(UUID chatIdentifier) {
Preconditions.checkArgument(chatIdentifier != null, "chatIdentifier must be provided");

this.id = null;
this.chatIdentifier = chatIdentifier;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.sequence.anonymous.chat.domain.repository;

import com.sequence.anonymous.chat.domain.Chat;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ChatRepository extends JpaRepository<Chat, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sequence.anonymous.chat.presentation;

import com.sequence.anonymous.chat.application.ChatService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequiredArgsConstructor
@RequestMapping("/chats")
public class ChatController {
private final ChatService chatService;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sequence.anonymous.college.application;

import com.sequence.anonymous.college.domain.repository.CollegeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class CollegeService {
private final CollegeRepository collegeRepository;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sequence.anonymous.college.application;

import com.sequence.anonymous.college.domain.repository.DepartmentRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class DepartmentService {
private final DepartmentRepository departmentRepository;
}
42 changes: 42 additions & 0 deletions src/main/java/com/sequence/anonymous/college/domain/College.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.sequence.anonymous.college.domain;

import com.google.common.base.Preconditions;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.data.geo.Point;

@Entity
@Getter
public class College {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(length = 20, nullable = false, unique = true)
private String name;

private Point location;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Point와 같은 Value Object를 사용하시려면 사용하는 엔티티 프로퍼티에 @Embedded를 달아주시고,
Point 클래스에 @Embeddable을 달아주셔야 합니다.


protected College() {
}

public College(String name, Point location) {
Preconditions.checkArgument(name != null, "name must be provided");
Preconditions.checkArgument(location != null, "location must be provided");

this.id = null;
this.name = name;
this.location = location;
}

public void update(String name, Point location) {
this.name = ObjectUtils.defaultIfNull(name, this.name);
this.location = ObjectUtils.defaultIfNull(location, this.location);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.sequence.anonymous.college.domain;

import com.google.common.base.Preconditions;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import lombok.Getter;
import org.apache.commons.lang3.ObjectUtils;

@Entity
@Getter
public class Department {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(length = 30, nullable = false)
private String name;

@ManyToOne
@JoinColumn(name = "college_id")
private College college;

protected Department() {
}

public Department(String name, College college) {
Preconditions.checkArgument(name != null, "name must be provided");
Preconditions.checkArgument(college != null, "college must be provided");

this.id = null;
this.name = name;
this.college = college;
}

public void update(String name) {
this.name = ObjectUtils.defaultIfNull(name, this.name);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.sequence.anonymous.college.domain.repository;

import com.sequence.anonymous.college.domain.College;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface CollegeRepository extends JpaRepository<College, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.sequence.anonymous.college.domain.repository;

import com.sequence.anonymous.college.domain.Department;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface DepartmentRepository extends JpaRepository<Department, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sequence.anonymous.college.presentation;

import com.sequence.anonymous.college.application.CollegeService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/colleges")
public class CollegeController {
private final CollegeService collegeService;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.sequence.anonymous.college.presentation;

import com.sequence.anonymous.college.application.DepartmentService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/departments")
public class DepartmentController {
private final DepartmentService departmentService;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sequence.anonymous.college.presentation.dto;

import lombok.Getter;

@Getter
public class DepartmentUpdateRequestDto {

private String name;

protected DepartmentUpdateRequestDto() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.sequence.anonymous.college.presentation.dto;

import lombok.Getter;
import org.springframework.data.geo.Point;

@Getter
public class UpdateRequestDto {

private String name;

private Point location;

protected UpdateRequestDto() {
}
}
23 changes: 23 additions & 0 deletions src/main/java/com/sequence/anonymous/common/BaseTimeEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.sequence.anonymous.common;

import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import java.time.LocalDateTime;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;

@LastModifiedDate
private LocalDateTime updatedAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sequence.anonymous.invite.application;

import com.sequence.anonymous.invite.domain.repository.InviteRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class InviteService {
private final InviteRepository inviteRepository;
}
64 changes: 64 additions & 0 deletions src/main/java/com/sequence/anonymous/invite/domain/Invite.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.sequence.anonymous.invite.domain;

import com.google.common.base.Preconditions;
import com.sequence.anonymous.user.domain.User;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import lombok.Getter;
import org.apache.commons.lang3.ObjectUtils;

@Entity
@Getter
public class Invite {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
@JoinColumn(name = "inviter_id")
private User inviter;

@ManyToOne
@JoinColumn(name = "invitee_id")
private User invitee;

@Column(length = 10)
@Enumerated(EnumType.STRING)
private Status status;


@Column(length = 15)
@Enumerated(EnumType.STRING)
private Kind kind;

protected Invite() {
}

public Invite(User inviter, User invitee, Kind kind) {
this(inviter, invitee, kind, Status.WAIT);
}

private Invite(User inviter, User invitee, Kind kind, Status status) {
Preconditions.checkArgument(inviter != null, "inviter must be provided");
Preconditions.checkArgument(invitee != null, "invitee must be provided");
Preconditions.checkArgument(kind != null, "kind must be provided");
Preconditions.checkArgument(status != null, "status must be provided");

this.inviter = inviter;
this.invitee = invitee;
this.kind = kind;
this.status = status;
}

public void update(Status status) {
this.status = ObjectUtils.defaultIfNull(status, this.status);
}
}
5 changes: 5 additions & 0 deletions src/main/java/com/sequence/anonymous/invite/domain/Kind.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sequence.anonymous.invite.domain;

public enum Kind {
MATCH_POST, FRIEND
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sequence.anonymous.invite.domain;

public enum Status {
WAIT, DONE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sequence.anonymous.invite.domain.repository;

import com.sequence.anonymous.invite.domain.Invite;
import lombok.RequiredArgsConstructor;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface InviteRepository extends JpaRepository<Invite, Long> {

}
Loading