diff --git a/src/main/java/com/debatetimer/domain/poll/PollStatus.java b/src/main/java/com/debatetimer/domain/poll/PollStatus.java new file mode 100644 index 00000000..f2d0ebad --- /dev/null +++ b/src/main/java/com/debatetimer/domain/poll/PollStatus.java @@ -0,0 +1,8 @@ +package com.debatetimer.domain.poll; + +public enum PollStatus { + + PROGRESS, + DONE, + ; +} diff --git a/src/main/java/com/debatetimer/domain/poll/VoteTeam.java b/src/main/java/com/debatetimer/domain/poll/VoteTeam.java new file mode 100644 index 00000000..d9648937 --- /dev/null +++ b/src/main/java/com/debatetimer/domain/poll/VoteTeam.java @@ -0,0 +1,8 @@ +package com.debatetimer.domain.poll; + +public enum VoteTeam { + + PROS, + CONS, + ; +} diff --git a/src/main/java/com/debatetimer/entity/poll/PollEntity.java b/src/main/java/com/debatetimer/entity/poll/PollEntity.java new file mode 100644 index 00000000..d4700a3d --- /dev/null +++ b/src/main/java/com/debatetimer/entity/poll/PollEntity.java @@ -0,0 +1,39 @@ +package com.debatetimer.entity.poll; + +import com.debatetimer.domain.poll.PollStatus; +import com.debatetimer.entity.customize.BaseTimeEntity; +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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "poll") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PollEntity extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private long tableId; + + @NotNull + @Enumerated(EnumType.STRING) + private PollStatus status; + + @NotBlank + private String prosTeamName; + + @NotBlank + private String consTeamName; + + private String agenda; +} diff --git a/src/main/java/com/debatetimer/entity/poll/VoteEntity.java b/src/main/java/com/debatetimer/entity/poll/VoteEntity.java new file mode 100644 index 00000000..9b01e7f4 --- /dev/null +++ b/src/main/java/com/debatetimer/entity/poll/VoteEntity.java @@ -0,0 +1,42 @@ +package com.debatetimer.entity.poll; + +import com.debatetimer.domain.poll.VoteTeam; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "vote") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class VoteEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "poll_id") + private PollEntity poll; + + @NotNull + @Enumerated(EnumType.STRING) + private VoteTeam team; + + @NotBlank + private String name; + + @NotBlank + private String participantCode; +} diff --git a/src/main/resources/db/migration/V9__create_poll_and_vote_table.sql b/src/main/resources/db/migration/V9__create_poll_and_vote_table.sql new file mode 100644 index 00000000..d5bf80ff --- /dev/null +++ b/src/main/resources/db/migration/V9__create_poll_and_vote_table.sql @@ -0,0 +1,25 @@ +CREATE TABLE poll +( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + table_id BIGINT NOT NULL, + status ENUM ('PROGRESS','DONE') NOT NULL, + pros_team_name VARCHAR(255) NOT NULL, + cons_team_name VARCHAR(255) NOT NULL, + agenda VARCHAR(255) NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +CREATE TABLE vote +( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + poll_id BIGINT NOT NULL, + team ENUM ('CONS','PROS') NOT NULL, + name VARCHAR(255) NOT NULL, + participant_code VARCHAR(255) NOT NULL +); + +alter table vote + add constraint vote_to_poll + foreign key (poll_id) + references poll (id);