Skip to content

Commit

Permalink
✨ Feat: 도메인 생성 #31 (#34) (#35)
Browse files Browse the repository at this point in the history
* Feat: User 도메인 생성

* Feat: Member 도메인 생성

* Feat: Team 도메인 생성

* Feat: Scrum 도메인 생성

* Feat: 도메인 상태 관리
  • Loading branch information
dlawjddn authored Mar 18, 2024
1 parent 506614e commit 61e9279
Show file tree
Hide file tree
Showing 14 changed files with 378 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Answer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package goormthon.team28.startup_valley.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

import java.time.LocalDateTime;

@Entity
@Getter
@DynamicUpdate
@Table(name = "answers")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Answer {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "question_id")
private Question question;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;
}
35 changes: 35 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Member.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package goormthon.team28.startup_valley.domain;

import goormthon.team28.startup_valley.dto.type.EPart;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Getter
@DynamicUpdate
@Table(name = "members")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;
@Column(name = "part")
@Enumerated(EnumType.STRING)
private EPart part;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@Column(name = "total_minute")
private Long totalMinute;
@Column(name = "retrospection")
private String retrospection;


}
35 changes: 35 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Question.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package goormthon.team28.startup_valley.domain;

import goormthon.team28.startup_valley.dto.type.EQuestionStatus;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

import java.time.LocalDateTime;

@Entity
@Getter
@DynamicUpdate
@Table(name = "questions")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Question {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sender_id")
private Member sender;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "receiver_id")
private Member receiver;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;
@Column(name = "question_status", nullable = false)
@Enumerated(EnumType.STRING)
private EQuestionStatus status;
}
30 changes: 30 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Review.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package goormthon.team28.startup_valley.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Getter
@DynamicUpdate
@Table(name = "reviews")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Review {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sender_id")
private Member sender;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "receiver_id")
private Member receiver;
@Column(name = "content")
private String content;
}
36 changes: 36 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Scrum.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package goormthon.team28.startup_valley.domain;

import goormthon.team28.startup_valley.dto.type.EScrumStatus;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

import java.time.LocalDate;

@Entity
@Getter
@DynamicUpdate
@Table(name = "scrums")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Scrum {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "summary")
private String summary;
@Column(name = "start_at", nullable = false)
private LocalDate startAt;
@Column(name = "end_at")
private LocalDate endAt;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "worker_id")
private Member worker;
@Column(name = "status")
@Enumerated(EnumType.STRING)
private EScrumStatus status;


}
39 changes: 39 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Team.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package goormthon.team28.startup_valley.domain;

import goormthon.team28.startup_valley.dto.type.EProjectStatus;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;

import java.time.LocalDate;

@Entity
@Getter
@DynamicUpdate
@Table(name = "teams")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Team {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "team_image")
private String teamImage;
@OneToOne
@JoinColumn(name = "id", nullable = false)
private Member leader;
@Column(name = "start_at", nullable = false)
private LocalDate startAt;
@Column(name = "end_at")
private LocalDate endAt;
@Column(name = "status")
@Enumerated(EnumType.STRING)
private EProjectStatus status;
@Column(name = "is_public", nullable = false)
private Boolean isPublic;
}
55 changes: 55 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package goormthon.team28.startup_valley.domain;

import goormthon.team28.startup_valley.dto.type.EProfileImage;
import goormthon.team28.startup_valley.dto.type.ERole;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.transaction.annotation.Transactional;

@Entity
@Getter
@DynamicUpdate
@Table(name = "users")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

/* 사용자 인증 및 권한 정보 */
@Column(name = "serial_id", nullable = false, unique = true)
private String serialId; // discord serial id
@Column(name = "password", nullable = false)
private String password;
@Column(name = "discord_id", nullable = true)
private Long discordId;
@Column(name = "role", nullable = false)
@Enumerated(EnumType.STRING)
private ERole role;

/* 사용자 이용 정보 */
@Column(name = "nickname", nullable = false)
private String nickname;
@Column(name = "profile_image", nullable = false)
@Enumerated(EnumType.STRING)
private EProfileImage profileImage;
@Column(name = "refresh_Token")
private String refreshToken;
@Builder
public User(String serialId, String password, ERole role, String nickname, EProfileImage profileImage, String refreshToken) {
this.serialId = serialId;
this.password = password;
this.role = role;
this.nickname = nickname;
this.profileImage = profileImage;
this.refreshToken = refreshToken;
}
public void doubleCheck(Long discordId){
this.discordId = discordId;
}
}
34 changes: 34 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/domain/Work.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package goormthon.team28.startup_valley.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicUpdate;

import java.time.LocalDateTime;

@Entity
@Getter
@DynamicUpdate
@Table(name = "works")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Work {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "scrum_id")
private Scrum scrum;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member owner;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "start_at", nullable = false)
private LocalDateTime startAt;
@Column(name = "end_at")
private LocalDateTime endAt;

}
15 changes: 15 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/dto/type/EPart.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum EPart {
BACKEND("BACKEND"),
FRONTEND("FRONTEND"),
FULLSTACK("FULLSTACK"),
PM("PM"),
DESIGN("DESIGN");
private final String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum EProfileImage {
BLUEBERRY("BLUEBERRY"),
CABBAGE("CABBAGE"),
CARROT("CARROT"),
CLOCK("CLOCK"),
CUCUMBER("CUCUMBER"),
LOADER("LOADER"),
STRAWBERRY("STRAWBERRY"),
TOMATO("TOMATO");
private final String name;
// blueberry, cabbage, carrot, clock, cucumber, loader, strawberry, tomato

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum EProjectStatus {
IN_PROGRESS("IN_PROGRESS"),
PEER_REVIEW("PEER_REVIEW"),
FINISH("FINISH");
private final String status;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum EQuestionStatus {
WAITING_ANSWER("WAITING_ANSWER"),
FINISH("FINISH");
private final String status;
}
14 changes: 14 additions & 0 deletions src/main/java/goormthon/team28/startup_valley/dto/type/ERole.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum ERole {
GUEST("GUEST", "ROLE_GUEST"),
USER("USER", "ROLE_USER"),
ADMIN("ADMIN", "ROLE_ADMIN");
private final String role;
private final String securityRole;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package goormthon.team28.startup_valley.dto.type;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum EScrumStatus {
IN_PROGRESS("IN_PROGRESS"),
FINISH("FINISH");
private final String status;
}

0 comments on commit 61e9279

Please sign in to comment.