From 15c11e8af268d11e5f833ded6a95a8aa5c36c165 Mon Sep 17 00:00:00 2001 From: donghoony Date: Sat, 10 Aug 2024 15:05:14 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/reviewme/question/domain/Option.java | 31 +++++++++++++ .../reviewme/question/domain/OptionGroup.java | 31 +++++++++++++ .../reviewme/question/domain/Question2.java | 40 +++++++++++++++++ .../question/domain/QuestionType.java | 8 ++++ .../review/domain/CheckboxAnswer.java | 32 +++++++++++++ .../java/reviewme/review/domain/Review2.java | 40 +++++++++++++++++ .../reviewme/review/domain/TextAnswer.java | 28 ++++++++++++ .../reviewme/template/domain/Section.java | 45 +++++++++++++++++++ .../reviewme/template/domain/Template.java | 29 ++++++++++++ .../reviewme/template/domain/VisibleType.java | 8 ++++ 10 files changed, 292 insertions(+) create mode 100644 backend/src/main/java/reviewme/question/domain/Option.java create mode 100644 backend/src/main/java/reviewme/question/domain/OptionGroup.java create mode 100644 backend/src/main/java/reviewme/question/domain/Question2.java create mode 100644 backend/src/main/java/reviewme/question/domain/QuestionType.java create mode 100644 backend/src/main/java/reviewme/review/domain/CheckboxAnswer.java create mode 100644 backend/src/main/java/reviewme/review/domain/Review2.java create mode 100644 backend/src/main/java/reviewme/review/domain/TextAnswer.java create mode 100644 backend/src/main/java/reviewme/template/domain/Section.java create mode 100644 backend/src/main/java/reviewme/template/domain/Template.java create mode 100644 backend/src/main/java/reviewme/template/domain/VisibleType.java diff --git a/backend/src/main/java/reviewme/question/domain/Option.java b/backend/src/main/java/reviewme/question/domain/Option.java new file mode 100644 index 000000000..fc489ef86 --- /dev/null +++ b/backend/src/main/java/reviewme/question/domain/Option.java @@ -0,0 +1,31 @@ +package reviewme.question.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "option") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Option { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "content", nullable = false) + private String content; + + @Column(name = "option_group_id", nullable = false) + private long optionGroupId; + + @Column(name = "order", nullable = false) + private int order; +} diff --git a/backend/src/main/java/reviewme/question/domain/OptionGroup.java b/backend/src/main/java/reviewme/question/domain/OptionGroup.java new file mode 100644 index 000000000..330ff963a --- /dev/null +++ b/backend/src/main/java/reviewme/question/domain/OptionGroup.java @@ -0,0 +1,31 @@ +package reviewme.question.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "option_group") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class OptionGroup { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "question_id", nullable = false) + private long questionId; + + @Column(name = "min_selection_count", nullable = false) + private int minSelectionCount; + + @Column(name = "max_selection_count", nullable = false) + private int maxSelectionCount; +} diff --git a/backend/src/main/java/reviewme/question/domain/Question2.java b/backend/src/main/java/reviewme/question/domain/Question2.java new file mode 100644 index 000000000..61bac270e --- /dev/null +++ b/backend/src/main/java/reviewme/question/domain/Question2.java @@ -0,0 +1,40 @@ +package reviewme.question.domain; + +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.Table; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "question2") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Question2 { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "required", nullable = false) + private boolean required; + + @Column(name = "question_type", nullable = false) + @Enumerated(EnumType.STRING) + private QuestionType questionType; + + @Column(name = "content", nullable = false, length = 1_000) + private String content; + + @Column(name = "guideline", nullable = true, length = 1_000) + private String guideline; + + @Column(name = "order", nullable = false) + private int order; +} diff --git a/backend/src/main/java/reviewme/question/domain/QuestionType.java b/backend/src/main/java/reviewme/question/domain/QuestionType.java new file mode 100644 index 000000000..863ba56e5 --- /dev/null +++ b/backend/src/main/java/reviewme/question/domain/QuestionType.java @@ -0,0 +1,8 @@ +package reviewme.question.domain; + +public enum QuestionType { + CHECKBOX, + TEXT, + ; + +} diff --git a/backend/src/main/java/reviewme/review/domain/CheckboxAnswer.java b/backend/src/main/java/reviewme/review/domain/CheckboxAnswer.java new file mode 100644 index 000000000..ae8ce51fb --- /dev/null +++ b/backend/src/main/java/reviewme/review/domain/CheckboxAnswer.java @@ -0,0 +1,32 @@ +package reviewme.review.domain; + +import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "checkbox_answer") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class CheckboxAnswer { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "question_id", nullable = false) + private long questionId; + + @ElementCollection + @CollectionTable(name = "selected_option_ids") + private List selectedOptionIds; +} diff --git a/backend/src/main/java/reviewme/review/domain/Review2.java b/backend/src/main/java/reviewme/review/domain/Review2.java new file mode 100644 index 000000000..c01612fe1 --- /dev/null +++ b/backend/src/main/java/reviewme/review/domain/Review2.java @@ -0,0 +1,40 @@ +package reviewme.review.domain; + +import jakarta.persistence.CascadeType; +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.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "review2") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Review2 { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "template_id", nullable = false) + private long templateId; + + @Column(name = "review_group_id", nullable = false) + private long reviewGroupId; + + @OneToMany(cascade = CascadeType.PERSIST) + @JoinColumn(name = "review_id", nullable = false, updatable = false) + private List textAnswers; + + @OneToMany(cascade = CascadeType.PERSIST) + @JoinColumn(name = "review_id", nullable = false, updatable = false) + private List checkboxAnswers; +} diff --git a/backend/src/main/java/reviewme/review/domain/TextAnswer.java b/backend/src/main/java/reviewme/review/domain/TextAnswer.java new file mode 100644 index 000000000..32894645c --- /dev/null +++ b/backend/src/main/java/reviewme/review/domain/TextAnswer.java @@ -0,0 +1,28 @@ +package reviewme.review.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "text_answer") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class TextAnswer { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "question_id", nullable = false) + private long questionId; + + @Column(name = "text", nullable = false, length = 1_000) + private String text; +} diff --git a/backend/src/main/java/reviewme/template/domain/Section.java b/backend/src/main/java/reviewme/template/domain/Section.java new file mode 100644 index 000000000..9e1ad0728 --- /dev/null +++ b/backend/src/main/java/reviewme/template/domain/Section.java @@ -0,0 +1,45 @@ +package reviewme.template.domain; + +import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +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.Table; +import java.util.List; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "section") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Section { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "visible_type", nullable = false) + @Enumerated(EnumType.STRING) + private VisibleType visibleType; + + @ElementCollection + @CollectionTable(name = "question_ids", joinColumns = @JoinColumn(name = "section_id")) + private List questionIds; + + @Column(name = "on_selected_option_id", nullable = true) + private Long onSelectedOptionId; + + @Column(name = "header", nullable = false, length = 1_000) + private String header; + + @Column(name = "order", nullable = false) + private int order; +} diff --git a/backend/src/main/java/reviewme/template/domain/Template.java b/backend/src/main/java/reviewme/template/domain/Template.java new file mode 100644 index 000000000..310e51ced --- /dev/null +++ b/backend/src/main/java/reviewme/template/domain/Template.java @@ -0,0 +1,29 @@ +package reviewme.template.domain; + +import jakarta.persistence.CollectionTable; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "template") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Template { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ElementCollection + @CollectionTable(name = "section_ids", joinColumns = @JoinColumn(name = "template_id")) + List sectionIds; +} diff --git a/backend/src/main/java/reviewme/template/domain/VisibleType.java b/backend/src/main/java/reviewme/template/domain/VisibleType.java new file mode 100644 index 000000000..3f899f526 --- /dev/null +++ b/backend/src/main/java/reviewme/template/domain/VisibleType.java @@ -0,0 +1,8 @@ +package reviewme.template.domain; + +public enum VisibleType { + + ALWAYS, + CONDITIONAL, + ; +} From 87d5e00c1ee39571e2405c682c24cbb9b7bb5867 Mon Sep 17 00:00:00 2001 From: donghoony Date: Sat, 10 Aug 2024 15:22:12 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20SQL=20=EC=98=88=EC=95=BD=EC=96=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../question/domain/{Option.java => OptionItem.java} | 8 ++++---- .../src/main/java/reviewme/question/domain/Question2.java | 4 ++-- .../src/main/java/reviewme/template/domain/Section.java | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) rename backend/src/main/java/reviewme/question/domain/{Option.java => OptionItem.java} (83%) diff --git a/backend/src/main/java/reviewme/question/domain/Option.java b/backend/src/main/java/reviewme/question/domain/OptionItem.java similarity index 83% rename from backend/src/main/java/reviewme/question/domain/Option.java rename to backend/src/main/java/reviewme/question/domain/OptionItem.java index fc489ef86..bd318b945 100644 --- a/backend/src/main/java/reviewme/question/domain/Option.java +++ b/backend/src/main/java/reviewme/question/domain/OptionItem.java @@ -11,10 +11,10 @@ import lombok.NoArgsConstructor; @Entity -@Table(name = "option") +@Table(name = "option_item") @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -public class Option { +public class OptionItem { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -26,6 +26,6 @@ public class Option { @Column(name = "option_group_id", nullable = false) private long optionGroupId; - @Column(name = "order", nullable = false) - private int order; + @Column(name = "position", nullable = false) + private int position; } diff --git a/backend/src/main/java/reviewme/question/domain/Question2.java b/backend/src/main/java/reviewme/question/domain/Question2.java index 61bac270e..55ae48c2a 100644 --- a/backend/src/main/java/reviewme/question/domain/Question2.java +++ b/backend/src/main/java/reviewme/question/domain/Question2.java @@ -35,6 +35,6 @@ public class Question2 { @Column(name = "guideline", nullable = true, length = 1_000) private String guideline; - @Column(name = "order", nullable = false) - private int order; + @Column(name = "position", nullable = false) + private int position; } diff --git a/backend/src/main/java/reviewme/template/domain/Section.java b/backend/src/main/java/reviewme/template/domain/Section.java index 9e1ad0728..fec4f84d6 100644 --- a/backend/src/main/java/reviewme/template/domain/Section.java +++ b/backend/src/main/java/reviewme/template/domain/Section.java @@ -40,6 +40,6 @@ public class Section { @Column(name = "header", nullable = false, length = 1_000) private String header; - @Column(name = "order", nullable = false) - private int order; + @Column(name = "position", nullable = false) + private int position; }