Skip to content

Commit 4de6d3a

Browse files
committed
Add plan data extensions for tags
1 parent fc874a3 commit 4de6d3a

7 files changed

Lines changed: 99 additions & 0 deletions

File tree

β€Žrealty-backend-api/src/main/java/io/github/md5sha256/realty/api/RealtyBackend.javaβ€Ž

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,16 @@ record ExpiredLeasehold(
559559

560560
double averageLeaseholdPrice();
561561

562+
// --- Region Tags ---
563+
564+
@NotNull List<String> getAllTagIds();
565+
566+
@NotNull List<String> getTagIdsByRegion(@NotNull String worldGuardRegionId);
567+
568+
@NotNull List<String> getRegionIdsByTag(@NotNull String tagId);
569+
570+
int countRegionsByTag(@NotNull String tagId);
571+
562572
// --- History Search ---
563573

564574
record HistoryResult(@NotNull List<HistoryEntry> entries, int totalCount) {}

β€Žrealty-backend/src/main/java/io/github/md5sha256/realty/database/RealtyBackendImpl.javaβ€Ž

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,4 +1658,32 @@ public double averageLeaseholdPrice() {
16581658
}
16591659
}
16601660

1661+
@Override
1662+
public @NotNull List<String> getAllTagIds() {
1663+
try (SqlSessionWrapper wrapper = database.openSession()) {
1664+
return wrapper.regionTagMapper().selectDistinctTagIds();
1665+
}
1666+
}
1667+
1668+
@Override
1669+
public @NotNull List<String> getTagIdsByRegion(@NotNull String worldGuardRegionId) {
1670+
try (SqlSessionWrapper wrapper = database.openSession()) {
1671+
return wrapper.regionTagMapper().selectTagIdsByRegionId(worldGuardRegionId);
1672+
}
1673+
}
1674+
1675+
@Override
1676+
public @NotNull List<String> getRegionIdsByTag(@NotNull String tagId) {
1677+
try (SqlSessionWrapper wrapper = database.openSession()) {
1678+
return wrapper.regionTagMapper().selectRegionIdsByTagId(tagId);
1679+
}
1680+
}
1681+
1682+
@Override
1683+
public int countRegionsByTag(@NotNull String tagId) {
1684+
try (SqlSessionWrapper wrapper = database.openSession()) {
1685+
return wrapper.regionTagMapper().countByTagId(tagId);
1686+
}
1687+
}
1688+
16611689
}

β€Žrealty-backend/src/main/java/io/github/md5sha256/realty/database/mapper/RegionTagMapper.javaβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ public interface RegionTagMapper {
2121

2222
int deleteAll();
2323

24+
int countByTagId(@NotNull String tagId);
25+
2426
}

β€Žrealty-backend/src/main/java/io/github/md5sha256/realty/database/maria/mapper/MariaRegionTagMapper.javaβ€Ž

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ int deleteByTagAndRegion(@Param("tagId") @NotNull String tagId,
4949
@Select("""
5050
SELECT DISTINCT tagId
5151
FROM RegionTag
52+
ORDER BY tagId ASC
5253
""")
5354
@NotNull List<String> selectDistinctTagIds();
5455

@@ -70,4 +71,12 @@ int deleteByTagAndRegion(@Param("tagId") @NotNull String tagId,
7071
""")
7172
int deleteAll();
7273

74+
@Override
75+
@Select("""
76+
SELECT COUNT(*)
77+
FROM RegionTag
78+
WHERE tagId = #{tagId}
79+
""")
80+
int countByTagId(@Param("tagId") @NotNull String tagId);
81+
7382
}

β€Žrealty-paper-api/src/main/java/io/github/md5sha256/realty/api/RealtyPaperApi.javaβ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,4 +373,12 @@ record Error(@NotNull String message) implements RemoveSignResult {}
373373

374374
@NotNull CompletableFuture<@NotNull Map<String, String>> getRegionPlaceholders(
375375
@NotNull String regionId, @NotNull UUID worldId);
376+
377+
// --- Region Tags ---
378+
379+
@NotNull CompletableFuture<@NotNull List<String>> getTagIdsByRegion(@NotNull String worldGuardRegionId);
380+
381+
@NotNull CompletableFuture<@NotNull List<String>> getRegionIdsByTag(@NotNull String tagId);
382+
383+
@NotNull CompletableFuture<Integer> countRegionsByTag(@NotNull String tagId);
376384
}

β€Žrealty-paper-plan-extension/src/main/java/io/github/md5sha256/realty/plan/RealtyDataExtension.javaβ€Ž

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@
77
import com.djrapitops.plan.extension.annotation.PercentageProvider;
88
import com.djrapitops.plan.extension.annotation.PluginInfo;
99
import com.djrapitops.plan.extension.annotation.StringProvider;
10+
import com.djrapitops.plan.extension.annotation.TableProvider;
1011
import com.djrapitops.plan.extension.FormatType;
1112
import com.djrapitops.plan.extension.icon.Color;
1213
import com.djrapitops.plan.extension.icon.Family;
14+
import com.djrapitops.plan.extension.icon.Icon;
15+
import com.djrapitops.plan.extension.table.Table;
1316
import io.github.md5sha256.realty.api.RealtyBackend;
1417
import org.jetbrains.annotations.NotNull;
1518

19+
import java.util.List;
1620
import java.util.UUID;
1721

1822
@PluginInfo(
@@ -245,4 +249,17 @@ public String playerTenantRegions(UUID playerUUID) {
245249
public String playerLandlordRegions(UUID playerUUID) {
246250
return String.join(", ", realtyApi.listRegionNamesByLandlord(playerUUID));
247251
}
252+
253+
@TableProvider(tableColor = Color.CYAN)
254+
public Table serverTagRegionCounts() {
255+
List<String> tagIds = realtyApi.getAllTagIds();
256+
Table.Factory table = Table.builder()
257+
.columnOne("Tag Name", Icon.called("tag").of(Family.SOLID).of(Color.CYAN).build())
258+
.columnTwo("Num Tagged Regions", Icon.called("hashtag").of(Family.SOLID).of(Color.BLUE).build());
259+
for (String tagId : tagIds) {
260+
int count = realtyApi.countRegionsByTag(tagId);
261+
table.addRow(tagId, count);
262+
}
263+
return table.build();
264+
}
248265
}

β€Žrealty-paper/src/main/java/io/github/md5sha256/realty/api/RealtyPaperApiImpl.javaβ€Ž

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,6 +1135,31 @@ public RealtyPaperApiImpl(@NotNull RealtyBackend realtyApi,
11351135
executorState.dbExec());
11361136
}
11371137

1138+
// --- Region Tags ---
1139+
1140+
@Override
1141+
public @NotNull CompletableFuture<@NotNull List<String>> getTagIdsByRegion(
1142+
@NotNull String worldGuardRegionId) {
1143+
return CompletableFuture.supplyAsync(
1144+
() -> realtyApi.getTagIdsByRegion(worldGuardRegionId),
1145+
executorState.dbExec());
1146+
}
1147+
1148+
@Override
1149+
public @NotNull CompletableFuture<@NotNull List<String>> getRegionIdsByTag(
1150+
@NotNull String tagId) {
1151+
return CompletableFuture.supplyAsync(
1152+
() -> realtyApi.getRegionIdsByTag(tagId),
1153+
executorState.dbExec());
1154+
}
1155+
1156+
@Override
1157+
public @NotNull CompletableFuture<Integer> countRegionsByTag(@NotNull String tagId) {
1158+
return CompletableFuture.supplyAsync(
1159+
() -> realtyApi.countRegionsByTag(tagId),
1160+
executorState.dbExec());
1161+
}
1162+
11381163
// ═══════════════════════════════════════
11391164
// PRIVATE HELPERS
11401165
// ═══════════════════════════════════════

0 commit comments

Comments
Β (0)