Skip to content

Commit 5ceaa8c

Browse files
committed
Add MapReviewsSummary and ModReviewsSummary
Also remove deprecated attributes numberOfReviews and averageReviewScore
1 parent 310ab43 commit 5ceaa8c

6 files changed

Lines changed: 174 additions & 33 deletions

File tree

src/main/java/com/faforever/api/data/domain/Map.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.faforever.api.data.domain;
22

3+
import com.faforever.api.data.checks.Prefab;
34
import com.faforever.api.data.listeners.MapChangeListener;
45
import com.yahoo.elide.annotation.Include;
6+
import com.yahoo.elide.annotation.UpdatePermission;
57
import lombok.Setter;
68
import org.hibernate.annotations.BatchSize;
79
import org.hibernate.annotations.Immutable;
810
import org.hibernate.annotations.JoinColumnOrFormula;
911
import org.hibernate.annotations.JoinColumnsOrFormulas;
1012
import org.hibernate.annotations.JoinFormula;
11-
import org.hibernate.validator.constraints.NotEmpty;
1213
import org.jetbrains.annotations.Nullable;
1314

1415
import javax.persistence.CascadeType;
@@ -23,6 +24,7 @@
2324
import javax.persistence.Table;
2425
import javax.persistence.Transient;
2526
import javax.validation.Valid;
27+
import javax.validation.constraints.NotEmpty;
2628
import javax.validation.constraints.NotNull;
2729
import javax.validation.constraints.Size;
2830
import java.util.ArrayList;
@@ -45,8 +47,7 @@ public class Map extends AbstractEntity implements OwnableEntity {
4547
private Player author;
4648
private MapStatistics statistics;
4749
private MapVersion latestVersion;
48-
private int numberOfReviews;
49-
private float averageReviewScore;
50+
private MapReviewsSummary reviewsSummary;
5051

5152
@Column(name = "display_name", unique = true)
5253
@Size(max = 100)
@@ -67,16 +68,6 @@ public String getBattleType() {
6768
return battleType;
6869
}
6970

70-
@Column(name = "reviews")
71-
public int getNumberOfReviews() {
72-
return numberOfReviews;
73-
}
74-
75-
@Column(name = "average_review_score")
76-
public float getAverageReviewScore() {
77-
return averageReviewScore;
78-
}
79-
8071
@OneToMany(mappedBy = "map", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
8172
@NotEmpty
8273
@Valid
@@ -101,16 +92,22 @@ public MapStatistics getStatistics() {
10192
@ManyToOne(fetch = FetchType.LAZY)
10293
@JoinColumnsOrFormulas({
10394
@JoinColumnOrFormula(
104-
formula = @JoinFormula(
105-
value = "(SELECT map_version.id FROM map_version WHERE map_version.map_id = id ORDER BY map_version.version DESC LIMIT 1)",
106-
referencedColumnName = "id")
95+
formula = @JoinFormula(
96+
value = "(SELECT map_version.id FROM map_version WHERE map_version.map_id = id ORDER BY map_version.version DESC LIMIT 1)",
97+
referencedColumnName = "id")
10798
)
10899
})
109100
@BatchSize(size = 1000)
110101
public MapVersion getLatestVersion() {
111102
return latestVersion;
112103
}
113104

105+
@OneToOne(mappedBy = "map")
106+
@UpdatePermission(expression = Prefab.ALL)
107+
public MapReviewsSummary getReviewsSummary() {
108+
return reviewsSummary;
109+
}
110+
114111
@Transient
115112
@Override
116113
public Login getEntityOwner() {
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.faforever.api.data.domain;
2+
3+
import com.yahoo.elide.annotation.Include;
4+
import lombok.Setter;
5+
import org.hibernate.annotations.BatchSize;
6+
import org.hibernate.annotations.Immutable;
7+
8+
import javax.annotation.Nullable;
9+
import javax.persistence.Column;
10+
import javax.persistence.Entity;
11+
import javax.persistence.FetchType;
12+
import javax.persistence.Id;
13+
import javax.persistence.JoinColumn;
14+
import javax.persistence.OneToOne;
15+
import javax.persistence.Table;
16+
17+
@Entity
18+
@Setter
19+
@Table(name = "map_reviews_summary")
20+
@Include(type = "mapReviewsSummary")
21+
@Immutable
22+
public class MapReviewsSummary {
23+
private int id;
24+
private float positive;
25+
private float negative;
26+
private float score;
27+
private int reviews;
28+
@Nullable
29+
private Float lowerBound;
30+
private Map map;
31+
32+
@Id
33+
@Column(name = "id")
34+
public int getId() {
35+
return id;
36+
}
37+
38+
@Column(name = "positive")
39+
public float getPositive() {
40+
return positive;
41+
}
42+
43+
@Column(name = "negative")
44+
public float getNegative() {
45+
return negative;
46+
}
47+
48+
@Column(name = "score")
49+
public float getScore() {
50+
return score;
51+
}
52+
53+
@Column(name = "reviews")
54+
public int getReviews() {
55+
return reviews;
56+
}
57+
58+
@Column(name = "lower_bound")
59+
@Nullable
60+
public Float getLowerBound() {
61+
return lowerBound;
62+
}
63+
64+
@OneToOne(fetch = FetchType.LAZY)
65+
@JoinColumn(name = "map_id", insertable = false, updatable = false)
66+
@BatchSize(size = 1000)
67+
public Map getMap() {
68+
return map;
69+
}
70+
}

src/main/java/com/faforever/api/data/domain/MapVersionReviewsSummary.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.hibernate.annotations.BatchSize;
66
import org.hibernate.annotations.Immutable;
77

8+
import javax.annotation.Nullable;
89
import javax.persistence.Column;
910
import javax.persistence.Entity;
1011
import javax.persistence.FetchType;
@@ -24,11 +25,12 @@ public class MapVersionReviewsSummary {
2425
private float negative;
2526
private float score;
2627
private int reviews;
27-
private float lowerBound;
28+
@Nullable
29+
private Float lowerBound;
2830
private MapVersion mapVersion;
2931

3032
@Id
31-
@Column(name = "map_version_id")
33+
@Column(name = "id")
3234
public int getId() {
3335
return id;
3436
}
@@ -54,7 +56,8 @@ public int getReviews() {
5456
}
5557

5658
@Column(name = "lower_bound")
57-
public float getLowerBound() {
59+
@Nullable
60+
public Float getLowerBound() {
5861
return lowerBound;
5962
}
6063

src/main/java/com/faforever/api/data/domain/Mod.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.faforever.api.data.domain;
22

3+
import com.faforever.api.data.checks.Prefab;
34
import com.yahoo.elide.annotation.Include;
5+
import com.yahoo.elide.annotation.UpdatePermission;
46
import lombok.Setter;
57
import org.hibernate.annotations.Immutable;
68
import org.hibernate.annotations.JoinColumnOrFormula;
@@ -14,6 +16,7 @@
1416
import javax.persistence.JoinColumn;
1517
import javax.persistence.ManyToOne;
1618
import javax.persistence.OneToMany;
19+
import javax.persistence.OneToOne;
1720
import javax.persistence.Table;
1821
import javax.persistence.Transient;
1922
import javax.validation.Valid;
@@ -35,8 +38,7 @@ public class Mod extends AbstractEntity implements OwnableEntity {
3538
private List<ModVersion> versions;
3639
private ModVersion latestVersion;
3740
private Player uploader;
38-
private int numberOfReviews;
39-
private float averageReviewScore;
41+
private ModReviewsSummary reviewsSummary;
4042

4143
@Column(name = "display_name")
4244
@Size(max = 100)
@@ -52,16 +54,6 @@ public String getAuthor() {
5254
return author;
5355
}
5456

55-
@Column(name = "reviews")
56-
public int getNumberOfReviews() {
57-
return numberOfReviews;
58-
}
59-
60-
@Column(name = "average_review_score")
61-
public float getAverageReviewScore() {
62-
return averageReviewScore;
63-
}
64-
6557
@ManyToOne
6658
@JoinColumn(name = "uploader")
6759
public Player getUploader() {
@@ -87,6 +79,12 @@ public ModVersion getLatestVersion() {
8779
return latestVersion;
8880
}
8981

82+
@OneToOne(mappedBy = "mod")
83+
@UpdatePermission(expression = Prefab.ALL)
84+
public ModReviewsSummary getReviewsSummary() {
85+
return reviewsSummary;
86+
}
87+
9088
@Transient
9189
@Override
9290
public Login getEntityOwner() {
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.faforever.api.data.domain;
2+
3+
import com.yahoo.elide.annotation.Include;
4+
import lombok.Setter;
5+
import org.hibernate.annotations.BatchSize;
6+
import org.hibernate.annotations.Immutable;
7+
8+
import javax.annotation.Nullable;
9+
import javax.persistence.Column;
10+
import javax.persistence.Entity;
11+
import javax.persistence.FetchType;
12+
import javax.persistence.Id;
13+
import javax.persistence.JoinColumn;
14+
import javax.persistence.OneToOne;
15+
import javax.persistence.Table;
16+
17+
@Entity
18+
@Setter
19+
@Table(name = "mod_reviews_summary")
20+
@Include(type = "modReviewsSummary")
21+
@Immutable
22+
public class ModReviewsSummary {
23+
private int id;
24+
private float positive;
25+
private float negative;
26+
private float score;
27+
private int reviews;
28+
@Nullable
29+
private Float lowerBound;
30+
private Mod mod;
31+
32+
@Id
33+
@Column(name = "id")
34+
public int getId() {
35+
return id;
36+
}
37+
38+
@Column(name = "positive")
39+
public float getPositive() {
40+
return positive;
41+
}
42+
43+
@Column(name = "negative")
44+
public float getNegative() {
45+
return negative;
46+
}
47+
48+
@Column(name = "score")
49+
public float getScore() {
50+
return score;
51+
}
52+
53+
@Column(name = "reviews")
54+
public int getReviews() {
55+
return reviews;
56+
}
57+
58+
@Column(name = "lower_bound")
59+
@Nullable
60+
public Float getLowerBound() {
61+
return lowerBound;
62+
}
63+
64+
@OneToOne(fetch = FetchType.LAZY)
65+
@JoinColumn(name = "mod_id", insertable = false, updatable = false)
66+
@BatchSize(size = 1000)
67+
public Mod getMod() {
68+
return mod;
69+
}
70+
}

src/main/java/com/faforever/api/data/domain/ModVersionReviewsSummary.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.hibernate.annotations.BatchSize;
66
import org.hibernate.annotations.Immutable;
77

8+
import javax.annotation.Nullable;
89
import javax.persistence.Column;
910
import javax.persistence.Entity;
1011
import javax.persistence.FetchType;
@@ -24,11 +25,12 @@ public class ModVersionReviewsSummary {
2425
private float negative;
2526
private float score;
2627
private int reviews;
27-
private float lowerBound;
28+
@Nullable
29+
private Float lowerBound;
2830
private ModVersion modVersion;
2931

3032
@Id
31-
@Column(name = "mod_version_id")
33+
@Column(name = "id")
3234
public int getId() {
3335
return id;
3436
}
@@ -54,6 +56,7 @@ public int getReviews() {
5456
}
5557

5658
@Column(name = "lower_bound")
59+
@Nullable
5760
public float getLowerBound() {
5861
return lowerBound;
5962
}

0 commit comments

Comments
 (0)