Skip to content

Commit 7b2e316

Browse files
committed
Add support for nickname search
The nicknames are hidden unless exported to csv after search, but the search will filter based on them. Affects issues: - Close #1773
1 parent f52eeb9 commit 7b2e316

File tree

7 files changed

+63
-7
lines changed

7 files changed

+63
-7
lines changed

Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/TablePlayer.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class TablePlayer implements Comparable<TablePlayer> {
4040
private Long lastSeen;
4141
private String geolocation;
4242
private Ping ping;
43+
private String nicknames;
4344

4445
private boolean banned = false;
4546

@@ -97,6 +98,10 @@ public boolean isBanned() {
9798
return banned;
9899
}
99100

101+
public String getNicknames() {
102+
return nicknames;
103+
}
104+
100105
@Override
101106
public int compareTo(TablePlayer other) {
102107
// Most recent first
@@ -203,6 +208,11 @@ public Builder ping(Ping ping) {
203208
return this;
204209
}
205210

211+
public Builder nicknames(String nicknames) {
212+
player.nicknames = nicknames;
213+
return this;
214+
}
215+
206216
public TablePlayer build() {
207217
return player;
208218
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/TablePlayerDto.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class TablePlayerDto {
4040
private Double pingAverage;
4141
private Integer pingMax;
4242
private Integer pingMin;
43+
private String nicknames;
4344

4445
private Map<String, ExtensionValueDataDto> extensionValues;
4546

@@ -147,6 +148,14 @@ public void setPingMin(Integer pingMin) {
147148
this.pingMin = pingMin;
148149
}
149150

151+
public String getNicknames() {
152+
return nicknames;
153+
}
154+
155+
public void setNicknames(String nicknames) {
156+
this.nicknames = nicknames;
157+
}
158+
150159
public static final class TablePlayerDtoBuilder {
151160
private final TablePlayerDto tablePlayerDto;
152161

@@ -206,6 +215,11 @@ public TablePlayerDtoBuilder withPing(Ping ping) {
206215
return this;
207216
}
208217

218+
public TablePlayerDtoBuilder withNicknames(String nicknames) {
219+
tablePlayerDto.setNicknames(nicknames);
220+
return this;
221+
}
222+
209223
public TablePlayerDto build() {return tablePlayerDto;}
210224
}
211225
}

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/PlayersTableJSONCreator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ private List<TablePlayerDto> toPlayers() {
143143
.withCountry(player.getGeolocation().orElse(null))
144144
.withExtensionValues(mapToExtensionValues(extensionData.get(player.getPlayerUUID())))
145145
.withPing(player.getPing())
146+
.withNicknames(player.getNicknames())
146147
.build()
147148
).collect(Collectors.toList());
148149
}

Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/NetworkTablePlayersQuery.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ public List<TablePlayer> executeQuery(SQLDB db) {
8282
FROM + UserInfoTable.TABLE_NAME + " ub" +
8383
WHERE + UserInfoTable.BANNED + "=?";
8484

85+
String selectNicknames = SELECT +
86+
"un." + UsersTable.ID + ',' +
87+
"GROUP_CONCAT(DISTINCT " + "n." + NicknamesTable.NICKNAME + ",',') as nicknames" +
88+
FROM + NicknamesTable.TABLE_NAME + " n" +
89+
INNER_JOIN + UsersTable.TABLE_NAME + " un ON n." + NicknamesTable.USER_UUID + "=un." + UsersTable.USER_UUID +
90+
GROUP_BY + "un." + UsersTable.ID;
91+
8592
String selectBaseUsers = SELECT +
8693
"u." + UsersTable.USER_UUID + ',' +
8794
"u." + UsersTable.USER_NAME + ',' +
@@ -94,13 +101,15 @@ public List<TablePlayer> executeQuery(SQLDB db) {
94101
"act.activity_index," +
95102
"pi.min_ping," +
96103
"pi.max_ping," +
97-
"pi.avg_ping" +
104+
"pi.avg_ping," +
105+
"ni.nicknames" +
98106
FROM + UsersTable.TABLE_NAME + " u" +
99107
LEFT_JOIN + '(' + selectBanned + ") ban on ban." + UserInfoTable.USER_ID + "=u." + UsersTable.ID +
100108
LEFT_JOIN + '(' + selectLatestGeolocations + ") geo on geo." + GeoInfoTable.USER_ID + "=u." + UsersTable.ID +
101109
LEFT_JOIN + '(' + selectSessionData + ") ses on ses." + SessionsTable.USER_ID + "=u." + UsersTable.ID +
102110
LEFT_JOIN + '(' + NetworkActivityIndexQueries.selectActivityIndexSQL() + ") act on u." + UsersTable.ID + "=act." + UserInfoTable.USER_ID +
103111
LEFT_JOIN + '(' + selectPingData + ") pi on pi." + PingTable.USER_ID + "=u." + UsersTable.ID +
112+
LEFT_JOIN + '(' + selectNicknames + ") ni on ni." + UsersTable.ID + "=u." + UsersTable.ID +
104113
ORDER_BY + "ses.last_seen DESC LIMIT ?";
105114

106115
return db.query(new QueryStatement<>(selectBaseUsers, 1000) {
@@ -127,7 +136,8 @@ public List<TablePlayer> processResults(ResultSet set) throws SQLException {
127136
.ping(new Ping(0L, null,
128137
set.getInt(PingTable.MIN_PING),
129138
set.getInt(PingTable.MAX_PING),
130-
set.getDouble(PingTable.AVG_PING)));
139+
set.getDouble(PingTable.AVG_PING)))
140+
.nicknames(set.getString("nicknames"));
131141
if (set.getString("banned") != null) {
132142
player.banned();
133143
}

Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/QueryTablePlayersQuery.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ public List<TablePlayer> executeQuery(SQLDB db) {
112112
(serverUUIDs.isEmpty() ? "" : AND + "p." + PingTable.SERVER_ID + " IN (" + selectServerIds + ")") +
113113
GROUP_BY + "p." + PingTable.USER_ID;
114114

115+
String selectNicknames = SELECT +
116+
"un." + UsersTable.ID + ',' +
117+
"GROUP_CONCAT(DISTINCT " + "n." + NicknamesTable.NICKNAME + ",',') as nicknames" +
118+
FROM + NicknamesTable.TABLE_NAME + " n" +
119+
INNER_JOIN + UsersTable.TABLE_NAME + " un ON n." + NicknamesTable.USER_UUID + "=un." + UsersTable.USER_UUID +
120+
GROUP_BY + "un." + UsersTable.ID;
121+
115122
String selectBaseUsers = SELECT +
116123
"u." + UsersTable.USER_UUID + ',' +
117124
"u." + UsersTable.USER_NAME + ',' +
@@ -124,13 +131,15 @@ public List<TablePlayer> executeQuery(SQLDB db) {
124131
"act.activity_index," +
125132
"pi.min_ping," +
126133
"pi.max_ping," +
127-
"pi.avg_ping" +
134+
"pi.avg_ping," +
135+
"ni.nicknames" +
128136
FROM + UsersTable.TABLE_NAME + " u" +
129137
LEFT_JOIN + '(' + selectBanned + ") ban on ban." + UserInfoTable.USER_ID + "=u." + UsersTable.ID +
130138
LEFT_JOIN + '(' + selectLatestGeolocations + ") geo on geo." + GeoInfoTable.USER_ID + "=u." + UsersTable.ID +
131139
LEFT_JOIN + '(' + selectSessionData + ") ses on ses." + SessionsTable.USER_ID + "=u." + UsersTable.ID +
132140
LEFT_JOIN + '(' + NetworkActivityIndexQueries.selectActivityIndexSQL() + ") act on u." + UsersTable.ID + "=act." + UserInfoTable.USER_ID +
133141
LEFT_JOIN + '(' + selectPingData + ") pi on pi." + PingTable.USER_ID + "=u." + UsersTable.ID +
142+
LEFT_JOIN + '(' + selectNicknames + ") ni on ni." + UsersTable.ID + "=u." + UsersTable.ID +
134143
WHERE + "u." + UsersTable.ID + userIdsInSet +
135144
ORDER_BY + "ses.last_seen DESC";
136145

@@ -159,7 +168,8 @@ public List<TablePlayer> processResults(ResultSet set) throws SQLException {
159168
.ping(new Ping(0L, null,
160169
set.getInt(PingTable.MIN_PING),
161170
set.getInt(PingTable.MAX_PING),
162-
set.getDouble(PingTable.AVG_PING)));
171+
set.getDouble(PingTable.AVG_PING)))
172+
.nicknames(set.getString("nicknames"));
163173
if (set.getString("banned") != null) {
164174
player.banned();
165175
}

Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/ServerTablePlayersQuery.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public List<TablePlayer> executeQuery(SQLDB db) {
9191
WHERE + "p." + PingTable.SERVER_ID + "=" + ServerTable.SELECT_SERVER_ID +
9292
GROUP_BY + "p." + PingTable.USER_ID;
9393

94+
String selectNicknames = SELECT +
95+
"un." + UsersTable.ID + ',' +
96+
"GROUP_CONCAT(DISTINCT " + "n." + NicknamesTable.NICKNAME + ",',') as nicknames" +
97+
FROM + NicknamesTable.TABLE_NAME + " n" +
98+
INNER_JOIN + UsersTable.TABLE_NAME + " un ON n." + NicknamesTable.USER_UUID + "=un." + UsersTable.USER_UUID +
99+
GROUP_BY + "un." + UsersTable.ID;
100+
94101
String selectBaseUsers = SELECT +
95102
"u." + UsersTable.USER_UUID + ',' +
96103
"u." + UsersTable.USER_NAME + ',' +
@@ -103,13 +110,15 @@ public List<TablePlayer> executeQuery(SQLDB db) {
103110
"act.activity_index," +
104111
"pi.min_ping," +
105112
"pi.max_ping," +
106-
"pi.avg_ping" +
113+
"pi.avg_ping," +
114+
"ni.nicknames" +
107115
FROM + UsersTable.TABLE_NAME + " u" +
108116
INNER_JOIN + UserInfoTable.TABLE_NAME + " on u." + UsersTable.ID + "=" + UserInfoTable.TABLE_NAME + '.' + UserInfoTable.USER_ID +
109117
LEFT_JOIN + '(' + selectLatestGeolocations + ") geo on geo." + GeoInfoTable.USER_ID + "=u." + UsersTable.ID +
110118
LEFT_JOIN + '(' + selectSessionData + ") ses on ses." + SessionsTable.USER_ID + "=u." + UsersTable.ID +
111119
LEFT_JOIN + '(' + ActivityIndexQueries.selectActivityIndexSQL() + ") act on u." + UsersTable.ID + "=act." + UserInfoTable.USER_ID +
112120
LEFT_JOIN + '(' + selectPingData + ") pi on pi." + PingTable.USER_ID + "=u." + UsersTable.ID +
121+
LEFT_JOIN + '(' + selectNicknames + ") ni on ni." + UsersTable.ID + "=u." + UsersTable.ID +
113122
WHERE + UserInfoTable.SERVER_ID + "=" + ServerTable.SELECT_SERVER_ID +
114123
ORDER_BY + "ses.last_seen DESC LIMIT ?";
115124

@@ -139,7 +148,8 @@ public List<TablePlayer> processResults(ResultSet set) throws SQLException {
139148
.ping(new Ping(0L, serverUUID,
140149
set.getInt(PingTable.MIN_PING),
141150
set.getInt(PingTable.MAX_PING),
142-
set.getDouble(PingTable.AVG_PING)));
151+
set.getDouble(PingTable.AVG_PING)))
152+
.nicknames(set.getString("nicknames"));
143153
if (set.getBoolean(UserInfoTable.BANNED)) {
144154
player.banned();
145155
}

Plan/react/dashboard/src/components/table/PlayerTable.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ const PlayerTable = ({data, orderBy}) => {
104104
pingMax: player.pingMax,
105105
pingMaxFormatted: localeService.localizePing(player.pingMax),
106106
pingMin: player.pingMin,
107-
pingMinFormatted: localeService.localizePing(player.pingMin)
107+
pingMinFormatted: localeService.localizePing(player.pingMin),
108+
nicknames: player.nicknames,
108109
};
109110
data.extensionDescriptors.forEach(descriptor => {
110111
row[descriptor.name] = <ExtensionValueTableCell data={player.extensionValues[descriptor.name]}/>;

0 commit comments

Comments
 (0)