diff --git a/eladmin-system/src/main/resources/db/migration/V8__add_match_and_event_player.sql b/eladmin-system/src/main/resources/db/migration/V8__add_match_and_event_player.sql new file mode 100644 index 00000000..83359e50 --- /dev/null +++ b/eladmin-system/src/main/resources/db/migration/V8__add_match_and_event_player.sql @@ -0,0 +1,8 @@ +-- Create event_player join table for co-host players +CREATE TABLE event_co_host_player ( + event_id BIGINT, + player_id BIGINT, + PRIMARY KEY (event_id, player_id), + CONSTRAINT fk_event_player_event FOREIGN KEY (event_id) REFERENCES event(id), + CONSTRAINT fk_event_player_player FOREIGN KEY (player_id) REFERENCES player(id) +); diff --git a/sport/src/main/java/com/srr/domain/Event.java b/sport/src/main/java/com/srr/domain/Event.java index 2a114ae0..ca4a9eef 100644 --- a/sport/src/main/java/com/srr/domain/Event.java +++ b/sport/src/main/java/com/srr/domain/Event.java @@ -29,6 +29,8 @@ import java.sql.Timestamp; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; /** * @website https://eladmin.vip @@ -126,6 +128,12 @@ public class Event implements Serializable { @Column(name = "`allow_wait_list`") private boolean allowWaitList; + @ManyToMany + @JoinTable(name = "event_player", + joinColumns = {@JoinColumn(name = "event_id",referencedColumnName = "id")}, + inverseJoinColumns = {@JoinColumn(name = "player_id",referencedColumnName = "id")}) + private List coHostPlayers = new ArrayList<>(); + public void copy(Event source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/sport/src/main/java/com/srr/domain/Match.java b/sport/src/main/java/com/srr/domain/Match.java index 4054233a..5d8e192e 100644 --- a/sport/src/main/java/com/srr/domain/Match.java +++ b/sport/src/main/java/com/srr/domain/Match.java @@ -23,8 +23,8 @@ public class Match implements Serializable { private MatchGroup matchGroup; @ManyToOne - @JoinColumn(name = "team_player_a_id") - private TeamPlayer teamPlayerA; + @JoinColumn(name = "team_a_id") + private TeamPlayer teamA; @Column(name = "`score_a`") @ApiModelProperty(value = "Score A") @@ -41,8 +41,8 @@ public class Match implements Serializable { private boolean teamBWin; @ManyToOne - @JoinColumn(name = "team_player_b_id") - private TeamPlayer teamPlayerB; + @JoinColumn(name = "team_b_id") + private Team teamB; @Column(name = "`score_verified`") private boolean scoreVerified; diff --git a/sport/src/main/java/com/srr/domain/MatchGroup.java b/sport/src/main/java/com/srr/domain/MatchGroup.java index e538a2df..1c4ef517 100644 --- a/sport/src/main/java/com/srr/domain/MatchGroup.java +++ b/sport/src/main/java/com/srr/domain/MatchGroup.java @@ -6,6 +6,8 @@ import lombok.Setter; import javax.persistence.*; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Getter @Setter @@ -25,4 +27,11 @@ public class MatchGroup implements Serializable { @ManyToOne @JoinColumn(name = "event_id") private Event event; + + // how many teams in one group + @Column(name = "`group_team_size`") + private int groupTeamSize; + + @OneToMany(mappedBy = "matchGroup") + private List teams = new ArrayList<>(); } diff --git a/sport/src/main/java/com/srr/domain/Team.java b/sport/src/main/java/com/srr/domain/Team.java index eec9db85..8df6095e 100644 --- a/sport/src/main/java/com/srr/domain/Team.java +++ b/sport/src/main/java/com/srr/domain/Team.java @@ -16,6 +16,10 @@ public class Team implements Serializable { @ApiModelProperty(value = "id", hidden = true) private Long id; + @ManyToOne + @JoinColumn(name = "match_group_id") + private MatchGroup matchGroup; + @ManyToOne @JoinColumn(name = "event_id") private Event event; diff --git a/sport/src/main/java/com/srr/dto/EventDto.java b/sport/src/main/java/com/srr/dto/EventDto.java index b83aed93..6e58dc44 100644 --- a/sport/src/main/java/com/srr/dto/EventDto.java +++ b/sport/src/main/java/com/srr/dto/EventDto.java @@ -22,6 +22,7 @@ import lombok.Data; import java.io.Serializable; import java.sql.Timestamp; +import java.util.List; /** * @website https://eladmin.vip @@ -85,4 +86,7 @@ public class EventDto implements Serializable { private boolean isPublic; private boolean allowWaitList; + + @ApiModelProperty(value = "Co-host players") + private List coHostPlayers; } \ No newline at end of file diff --git a/sport/src/main/java/com/srr/dto/MatchDto.java b/sport/src/main/java/com/srr/dto/MatchDto.java index 232033b1..dfac82c2 100644 --- a/sport/src/main/java/com/srr/dto/MatchDto.java +++ b/sport/src/main/java/com/srr/dto/MatchDto.java @@ -35,15 +35,24 @@ public class MatchDto implements Serializable { @ApiModelProperty(value = "Match Group id") private Long matchGroupId; - @ApiModelProperty(value = "Team 1 id") - private Long team1Id; + @ApiModelProperty(value = "Team A id") + private Long teamA; - @ApiModelProperty(value = "Team 2 id") - private Long team2Id; + @ApiModelProperty(value = "Team B id") + private Long teamB; - @ApiModelProperty(value = "Score Team 1") - private Integer scoreTeam1; + @ApiModelProperty(value = "Score A") + private Integer scoreA; - @ApiModelProperty(value = "Score Team 2") - private Integer scoreTeam2; + @ApiModelProperty(value = "Score B") + private Integer scoreB; + + @ApiModelProperty(value = "Team A Win") + private Boolean teamAWin; + + @ApiModelProperty(value = "Team B Win") + private Boolean teamBWin; + + @ApiModelProperty(value = "Score Verified") + private Boolean scoreVerified; }