diff --git a/src/main/java/com/cmc/suppin/answer/controller/.gitkeep b/src/main/java/com/cmc/suppin/answer/controller/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/answer/converter/.gitkeep b/src/main/java/com/cmc/suppin/answer/converter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/answer/domain/AnonymousParticipant.java b/src/main/java/com/cmc/suppin/answer/domain/AnonymousParticipant.java new file mode 100644 index 0000000..589b8ac --- /dev/null +++ b/src/main/java/com/cmc/suppin/answer/domain/AnonymousParticipant.java @@ -0,0 +1,26 @@ +package com.cmc.suppin.answer.domain; + +import com.cmc.suppin.global.domain.BaseDateTimeEntity; +import com.cmc.suppin.survey.domain.Survey; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class AnonymousParticipant extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "anonymous_participant_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "survey_id") + private Survey survey; + + @Column(columnDefinition = "VARCHAR(255)", nullable = false) + private String sessionId; + + @OneToMany(mappedBy = "anonymousParticipant") + private List answerList = new ArrayList<>(); +} diff --git a/src/main/java/com/cmc/suppin/answer/domain/Answer.java b/src/main/java/com/cmc/suppin/answer/domain/Answer.java new file mode 100644 index 0000000..3fcdffa --- /dev/null +++ b/src/main/java/com/cmc/suppin/answer/domain/Answer.java @@ -0,0 +1,33 @@ +package com.cmc.suppin.answer.domain; + +import com.cmc.suppin.global.domain.BaseDateTimeEntity; +import com.cmc.suppin.survey.domain.Question; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Answer extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "answer_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "question_id") + private Question question; + + @ManyToOne + @JoinColumn(name = "anonymous_participant_id") + private AnonymousParticipant anonymousParticipant; + + @OneToMany(mappedBy = "answer") + private List answerOptionList = new ArrayList<>(); + + @Column(columnDefinition = "TEXT", nullable = false) + private String answerText; + +} + diff --git a/src/main/java/com/cmc/suppin/answer/domain/AnswerOption.java b/src/main/java/com/cmc/suppin/answer/domain/AnswerOption.java new file mode 100644 index 0000000..2f06669 --- /dev/null +++ b/src/main/java/com/cmc/suppin/answer/domain/AnswerOption.java @@ -0,0 +1,22 @@ +package com.cmc.suppin.answer.domain; + +import com.cmc.suppin.survey.domain.QuestionOption; + +import javax.persistence.*; + +@Entity +public class AnswerOption { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "answer_option_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "answer_id", nullable = false) + private Answer answer; + + @ManyToOne + @JoinColumn(name = "question_option_id", nullable = false) + private QuestionOption questionOption; +} + diff --git a/src/main/java/com/cmc/suppin/answer/exception/.gitkeep b/src/main/java/com/cmc/suppin/answer/exception/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/answer/service/.gitkeep b/src/main/java/com/cmc/suppin/answer/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/comment/controller/.gitkeep b/src/main/java/com/cmc/suppin/comment/controller/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/comment/converter/.gitkeep b/src/main/java/com/cmc/suppin/comment/converter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/comment/domain/Comment.java b/src/main/java/com/cmc/suppin/comment/domain/Comment.java new file mode 100644 index 0000000..f6f2734 --- /dev/null +++ b/src/main/java/com/cmc/suppin/comment/domain/Comment.java @@ -0,0 +1,27 @@ +package com.cmc.suppin.comment.domain; + +import com.cmc.suppin.event.domain.Event; +import com.cmc.suppin.global.domain.BaseDateTimeEntity; + +import javax.persistence.*; + +@Entity +public class Comment extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "comment_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "event_id") + private Event event; + + @Column(columnDefinition = "TEXT", nullable = false) + private String url; + @Column(columnDefinition = "VARCHAR(30)", nullable = false) + private String nickname; + @Column(columnDefinition = "TEXT", nullable = false) + private String commentText; + +} diff --git a/src/main/java/com/cmc/suppin/comment/exception/.gitkeep b/src/main/java/com/cmc/suppin/comment/exception/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/comment/service/.gitkeep b/src/main/java/com/cmc/suppin/comment/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/event/controller/.gitkeep b/src/main/java/com/cmc/suppin/event/controller/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/event/converter/.gitkeep b/src/main/java/com/cmc/suppin/event/converter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/event/domain/Event.java b/src/main/java/com/cmc/suppin/event/domain/Event.java new file mode 100644 index 0000000..8e150f8 --- /dev/null +++ b/src/main/java/com/cmc/suppin/event/domain/Event.java @@ -0,0 +1,50 @@ +package com.cmc.suppin.event.domain; + +import com.cmc.suppin.comment.domain.Comment; +import com.cmc.suppin.global.domain.BaseDateTimeEntity; +import com.cmc.suppin.global.enums.EventType; +import com.cmc.suppin.member.domain.Member; +import com.cmc.suppin.survey.domain.Survey; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Event extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "event_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "member_id") + private Member member; + + @OneToMany(mappedBy = "event") + private List surveyList = new ArrayList<>(); + + @OneToMany(mappedBy = "event") + private List commentList = new ArrayList<>(); + + @Column(columnDefinition = "VARCHAR(100)", nullable = false) + private String title; + + @Column(columnDefinition = "TEXT", nullable = false) + private String description; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private EventType type; + + @Column + private LocalDateTime startDate; + @Column + private LocalDateTime endDate; + @Column + private LocalDateTime announcementDate; + + // Getters and Setters + +} diff --git a/src/main/java/com/cmc/suppin/event/exception/.gitkeep b/src/main/java/com/cmc/suppin/event/exception/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/event/service/.gitkeep b/src/main/java/com/cmc/suppin/event/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/global/domain/BaseDateTimeEntity.java b/src/main/java/com/cmc/suppin/global/domain/BaseDateTimeEntity.java new file mode 100644 index 0000000..196f352 --- /dev/null +++ b/src/main/java/com/cmc/suppin/global/domain/BaseDateTimeEntity.java @@ -0,0 +1,24 @@ +package com.cmc.suppin.global.domain; + +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import java.time.LocalDateTime; + +@EntityListeners(AuditingEntityListener.class) +@MappedSuperclass +@Getter +public abstract class BaseDateTimeEntity { + + @Column(updatable = false) + @CreatedDate + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/cmc/suppin/global/enums/EventType.java b/src/main/java/com/cmc/suppin/global/enums/EventType.java new file mode 100644 index 0000000..fea0236 --- /dev/null +++ b/src/main/java/com/cmc/suppin/global/enums/EventType.java @@ -0,0 +1,5 @@ +package com.cmc.suppin.global.enums; + +public enum EventType { + COMMENT, SURVEY +} diff --git a/src/main/java/com/cmc/suppin/global/enums/QuestionType.java b/src/main/java/com/cmc/suppin/global/enums/QuestionType.java new file mode 100644 index 0000000..e22b96d --- /dev/null +++ b/src/main/java/com/cmc/suppin/global/enums/QuestionType.java @@ -0,0 +1,17 @@ +package com.cmc.suppin.global.enums; + +public enum QuestionType { + SHORT_ANSWER("주관식"), + SINGLE_CHOICE("객관식(단일 선택)"), + MULTIPLE_CHOICE("객관식(복수 선택)"); + + private String description; + + QuestionType(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } +} diff --git a/src/main/java/com/cmc/suppin/member/controller/.gitkeep b/src/main/java/com/cmc/suppin/member/controller/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/member/converter/.gitkeep b/src/main/java/com/cmc/suppin/member/converter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/member/domain/Member.java b/src/main/java/com/cmc/suppin/member/domain/Member.java new file mode 100644 index 0000000..fff34e7 --- /dev/null +++ b/src/main/java/com/cmc/suppin/member/domain/Member.java @@ -0,0 +1,36 @@ +package com.cmc.suppin.member.domain; + +import com.cmc.suppin.event.domain.Event; +import com.cmc.suppin.global.domain.BaseDateTimeEntity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Member extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "member_id") + private Long id; + + @OneToMany(mappedBy = "member") + private List eventList = new ArrayList<>(); + + @Column(columnDefinition = "VARCHAR(20)", nullable = false) + private String name; + + @Column(columnDefinition = "VARCHAR(30)", nullable = false) + private String nickname; + + @Column(columnDefinition = "VARCHAR(30)", nullable = false) + private String email; + + @Column(columnDefinition = "VARCHAR(20)", nullable = false) + private String password; + + @Column(columnDefinition = "VARCHAR(13)", nullable = false) + private String phoneNumber; + +} + diff --git a/src/main/java/com/cmc/suppin/member/exception/.gitkeep b/src/main/java/com/cmc/suppin/member/exception/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/member/service/.gitkeep b/src/main/java/com/cmc/suppin/member/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/survey/controller/.gitkeep b/src/main/java/com/cmc/suppin/survey/controller/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/survey/converter/.gitkeep b/src/main/java/com/cmc/suppin/survey/converter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/survey/domain/Question.java b/src/main/java/com/cmc/suppin/survey/domain/Question.java new file mode 100644 index 0000000..173e01d --- /dev/null +++ b/src/main/java/com/cmc/suppin/survey/domain/Question.java @@ -0,0 +1,33 @@ +package com.cmc.suppin.survey.domain; + +import com.cmc.suppin.answer.domain.Answer; +import com.cmc.suppin.global.enums.QuestionType; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Question { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long questionId; + + @ManyToOne + @JoinColumn(name = "survey_id") + private Survey survey; + + @OneToMany(mappedBy = "question") + private List questionOptionList = new ArrayList<>(); + + @OneToMany(mappedBy = "question") + private List answerList = new ArrayList<>(); + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private QuestionType questionType; + + @Column(columnDefinition = "VARCHAR(100)", nullable = false) + private String questionText; + +} diff --git a/src/main/java/com/cmc/suppin/survey/domain/QuestionOption.java b/src/main/java/com/cmc/suppin/survey/domain/QuestionOption.java new file mode 100644 index 0000000..1fc91e6 --- /dev/null +++ b/src/main/java/com/cmc/suppin/survey/domain/QuestionOption.java @@ -0,0 +1,27 @@ +package com.cmc.suppin.survey.domain; + +import com.cmc.suppin.answer.domain.AnswerOption; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class QuestionOption { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "question_option_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "question_id") + private Question question; + + @Column(columnDefinition = "VARCHAR(50)", nullable = false) + private String optionText; + + @OneToMany(mappedBy = "questionOption") + private List answerOptionList = new ArrayList<>(); + +} + diff --git a/src/main/java/com/cmc/suppin/survey/domain/Survey.java b/src/main/java/com/cmc/suppin/survey/domain/Survey.java new file mode 100644 index 0000000..b5948ea --- /dev/null +++ b/src/main/java/com/cmc/suppin/survey/domain/Survey.java @@ -0,0 +1,29 @@ +package com.cmc.suppin.survey.domain; + +import com.cmc.suppin.answer.domain.AnonymousParticipant; +import com.cmc.suppin.event.domain.Event; +import com.cmc.suppin.global.domain.BaseDateTimeEntity; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Survey extends BaseDateTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "survey_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "event_id") + private Event event; + + @OneToMany(mappedBy = "survey") + private List questionList = new ArrayList<>(); + + @OneToMany(mappedBy = "survey") + private List anonymousParticipantList = new ArrayList<>(); + +} + diff --git a/src/main/java/com/cmc/suppin/survey/exception/.gitkeep b/src/main/java/com/cmc/suppin/survey/exception/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/cmc/suppin/survey/service/.gitkeep b/src/main/java/com/cmc/suppin/survey/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7b1d301..82665d1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,7 +6,7 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: - ddl-auto: none + ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect